Page 1 of 1

binary search algorithm research

Posted: Sun Feb 08, 2015 5:22 pm
by AndreyB
findIndex method is executed pretty often for us to invest into the best implementation for our platform

current plain implementation

Code: Select all

	while (true) {
		middle = (left + right) / 2;

		if (middle == left)
			break;

		if (value < array[middle]) {
			right = middle;
		} else if (value > array[middle]) {
			left = middle;
		} else {
			break;
		}
	}

	return middle;
might be not the best one - I am concerned about three 'if' statements.

A possible alternative would be http://eigenjoy.com/2011/01/21/worlds-fastest-binary-search/ or maybe something else.

Who would like to do some micro-benchmaring between out current implementation and worlds-fastest-binary-search? Maybe also an inlined version of worlds-fastest-binary-search hardcoded for size 16.

Re: binary search algorithm research

Posted: Thu Feb 19, 2015 7:20 am
by rus084
it's new our binary search

Code: Select all

int findIndex2(const float array[], unsigned size, float value) {
	efiAssert(!cisnan(value) && size > 1 , "NaN in findIndex", 0);
//	if (size <= 1)
//		return size && *array <= value ? 0 : -1;

	signed i = 0;
	//unsigned b = 1 << int(log(float(size) - 1) / 0.69314718055994530942);
	unsigned b = size >> 1; // in our case size is always a power of 2
	efiAssert(b + b == size, "Size not power of 2", -1);
	for (; b; b >>= 1) {
		unsigned j = i | b;
		/**
		 * it should be
		 * "if (j < size && array[j] <= value)"
		 * but in our case size is always power of 2 thus size is always more then j
		 */
		// efiAssert(j < size, "size", 0);
		if (array[j] <= value)
			i = j;
	}
	return i || *array <= value ? i : -1;
}
i use this speed test for old and new algo .

Code: Select all

#define COUNT 10000

float array16[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };

static void testBinary(void) {
	const int size16 = 16;

	uint32_t totalOld = 0;
	uint32_t totalNew = 0;

	for (int v = 0; v <= 16; v++) {
		uint32_t timeOld;
		{
			uint32_t start = GET_TIMESTAMP();
			int temp = 0;
			for (int i = 0; i < COUNT; i++) {
				temp += findIndex(array16, size16, v);
			}
			timeOld = GET_TIMESTAMP() - start;
		}
		uint32_t timeNew;
		{
			uint32_t start = GET_TIMESTAMP();
			int temp = 0;
			for (int i = 0; i < COUNT; i++) {
				temp += findIndex2(array16, size16, v);
			}
			timeNew = GET_TIMESTAMP() - start;
		}
		scheduleMsg(logger, "for v=%d old=%d ticks", v, timeOld);
		scheduleMsg(logger, "for v=%d new=%d ticks", v, timeNew);

		totalOld += timeOld;
		totalNew += timeNew;
	}
	scheduleMsg(logger, "totalOld=%d ticks", totalOld);
	scheduleMsg(logger, "totalNew=%d ticks", totalNew);

}
but on different compilators and optimization settings i saw different results :

Code: Select all

iar_high_optimization(size).hex : 408 685 bytes
2015-02-18 15_33: EngineState: totalOld=14694424 ticks
2015-02-18 15_33: EngineState: totalNew=15092616 ticks


iar_high_optimization(speed).hex : 492 406 bytes
2015-02-18 15_36: EngineState: totalOld=11975554 ticks
2015-02-18 15_36: EngineState: totalNew=2274398 ticks


iar_low_optimization(default).hex : 487 779 bytes
2015-02-18 15_38: EngineState: totalOld=24839825 ticks
2015-02-18 15_38: EngineState: totalNew=23397974 ticks


iar_none_optimization.hex : 503 979 bytes
2015-02-18 15_39: EngineState: totalOld=26623123 ticks
2015-02-18 15_39: EngineState: totalNew=24688075 ticks

rusefi-gcc-default.hex : 681 854 bytes
2015-02-18 15_40: EngineState: totalOld=37664588 ticks
2015-02-18 15_40: EngineState: totalNew=37954113 ticks
i change optimisation setting like this pictures
iar_step_1.png
iar_step_2.png
iar version is :

Code: Select all

=== Install subdirectory: arm ===
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\het470.exe
  05/Mar/2013 13:21:28, 212992 bytes
  
IAR Archive Tool
  9.13.8.82 (9.13.8.82)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\iarchive.exe
  15/Feb/2013 12:14:34, 1680384 bytes
  
IAR Assembler for ARM
  6.50.3.4676 (6.50.3.4676)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\iasmarm.exe
  15/Feb/2013 12:14:32, 2624512 bytes
  
IAR C/C++ Compiler for ARM
  6.50.3.4676 (6.50.3.4676)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\iccarm.exe
  10/Jan/2015 12:31:18, 27929088 bytes
  
IAR ELF Dumper for ARM
  6.50.3.4676 (6.50.3.4676)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\ielfdumparm.exe
  15/Feb/2013 12:14:34, 2866688 bytes
  
IAR ELF Tool
  9.13.8.82 (9.13.8.82)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\ielftool.exe
  15/Feb/2013 12:14:34, 339968 bytes
  
IAR ELF Linker for ARM
  6.50.3.4676 (6.50.3.4676)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\ilinkarm.exe
  10/Jan/2015 12:31:20, 5764608 bytes
  
IAR Object File Manipulator
  9.13.8.82 (9.13.8.82)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\iobjmanip.exe
  15/Feb/2013 12:14:34, 1036288 bytes
  
IAR Absolute Symbol Exporter
  9.13.8.82 (9.13.8.82)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\isymexport.exe
  15/Feb/2013 12:14:36, 993792 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jlink.exe
  01/Mar/2013 12:21:20, 190824 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\JLinkConfig.exe
  01/Mar/2013 12:21:24, 166248 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\JLinkRemoteServer.exe
  01/Mar/2013 12:21:24, 407912 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\JLinkSTM32.exe
  01/Mar/2013 12:21:20, 76136 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\JLinkSTR91x.exe
  01/Mar/2013 12:21:20, 88424 bytes
  
EmuDiag Application
  3, 50, 0, 0 (3.50.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\EmuDiag.exe
  05/Mar/2013 08:20:50, 207360 bytes
  
IAR C-SPY Angel Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armangel.dll
  10/Jan/2015 12:31:20, 4088320 bytes
  
IAR C-SPY Angel Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armangel.ENU.dll
  05/Mar/2013 06:09:18, 192000 bytes
  
IAR C-SPY Angel Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armangel.JPN.dll
  05/Mar/2013 06:09:14, 153088 bytes
  
IAR C-SPY Library Support Plug-In for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.dll
  05/Mar/2013 06:09:10, 753664 bytes
  
IAR C-SPY Library Support Plug-In for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.ENU.dll
  05/Mar/2013 06:08:44, 105984 bytes
  
IAR C-SPY Library Support Plug-In for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.JPN.dll
  05/Mar/2013 06:08:40, 83456 bytes
  
IAR C-SPY GDB Server Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armgdbserv.dll
  10/Jan/2015 12:31:20, 4007936 bytes
  
IAR C-SPY GDB Server Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armgdbserv.ENU.dll
  05/Mar/2013 06:08:38, 197120 bytes
  
IAR C-SPY GDB Server Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armgdbserv.JPN.dll
  05/Mar/2013 06:08:36, 157696 bytes
  
IAR C-SPY Jet Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjet.dll
  10/Jan/2015 12:31:18, 6815232 bytes
  
IAR C-SPY Jet Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjet.ENU.dll
  05/Mar/2013 06:08:20, 185344 bytes
  
IAR C-SPY Jet Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjet.JPN.dll
  05/Mar/2013 06:08:18, 153600 bytes
  
IAR C-SPY JLink Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjlink.dll
  10/Jan/2015 12:31:18, 7900672 bytes
  
IAR C-SPY JLink Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjlink.ENU.dll
  05/Mar/2013 06:08:04, 199680 bytes
  
IAR C-SPY JLink Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjlink.JPN.dll
  05/Mar/2013 06:08:00, 163328 bytes
  
IAR C-SPY JTAG Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjtag.dll
  10/Jan/2015 12:31:21, 3944448 bytes
  
IAR C-SPY JTAG Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjtag.ENU.dll
  05/Mar/2013 06:07:58, 188928 bytes
  
IAR C-SPY JTAG Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armjtag.JPN.dll
  05/Mar/2013 06:10:42, 154112 bytes
  
IAR C-SPY Library Support Plug-In for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armLibSupport.dll
  05/Mar/2013 06:07:54, 869888 bytes
  
IAR C-SPY Library Support Plug-In for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armLibSupport.ENU.dll
  05/Mar/2013 06:07:36, 92160 bytes
  
IAR C-SPY Library Support Plug-In for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armLibSupport.JPN.dll
  05/Mar/2013 06:07:34, 69632 bytes
  
IAR C-SPY TI Stellaris FTDI/ICDI Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armlmiftdi.dll
  10/Jan/2015 12:31:18, 6288384 bytes
  
IAR C-SPY TI Stellaris FTDI/ICDI Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armlmiftdi.ENU.dll
  05/Mar/2013 06:07:54, 205312 bytes
  
IAR C-SPY TI Stellaris FTDI/ICDI Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armlmiftdi.JPN.dll
  05/Mar/2013 06:07:52, 165376 bytes
  
IAR C-SPY PE MICRO Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armpemicro.dll
  05/Mar/2013 06:16:52, 2704896 bytes
  
IAR C-SPY Processor Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.dll
  05/Mar/2013 06:07:36, 3267072 bytes
  
IAR C-SPY Processor Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.ENU.dll
  05/Mar/2013 06:06:54, 102912 bytes
  
IAR C-SPY Processor Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.JPN.dll
  05/Mar/2013 06:06:50, 75264 bytes
  
IAR C-SPY RDI Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armrdi.dll
  10/Jan/2015 12:31:20, 5129728 bytes
  
IAR C-SPY RDI Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armrdi.ENU.dll
  05/Mar/2013 06:06:46, 185856 bytes
  
IAR C-SPY RDI Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armrdi.JPN.dll
  05/Mar/2013 06:06:42, 150528 bytes
  
IAR C-SPY ROM-Monitor Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armrom.dll
  10/Jan/2015 12:31:21, 3945984 bytes
  
IAR C-SPY ROM-Monitor Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armrom.ENU.dll
  05/Mar/2013 06:06:40, 188928 bytes
  
IAR C-SPY ROM-Monitor Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armrom.JPN.dll
  05/Mar/2013 06:06:40, 150016 bytes
  
IAR C-SPY Simulator Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armsim2.dll
  10/Jan/2015 12:31:18, 9586176 bytes
  
IAR C-SPY Simulator Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armsim2.ENU.dll
  05/Mar/2013 06:06:34, 176128 bytes
  
IAR C-SPY Simulator Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armsim2.JPN.dll
  05/Mar/2013 06:06:34, 141824 bytes
  
IAR C-SPY ST-LINK Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armstlink.dll
  05/Mar/2013 06:09:32, 6538752 bytes
  
IAR C-SPY ST-LINK Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armstlink.ENU.dll
  05/Mar/2013 06:06:34, 199168 bytes
  
IAR C-SPY ST-LINK Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armstlink.JPN.dll
  05/Mar/2013 06:06:34, 162816 bytes
  
IAR C-SPY TI XDS100 Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armXDS100.dll
  10/Jan/2015 12:31:21, 3824128 bytes
  
IAR C-SPY TI XDS100 Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armXDS100.ENU.dll
  05/Mar/2013 06:07:56, 185856 bytes
  
IAR C-SPY TI XDS100 Driver for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armXDS100.JPN.dll
  05/Mar/2013 06:09:22, 150528 bytes
  
IAR Workbench Project file converter for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\cwtdarm.dll
  05/Mar/2013 06:04:52, 1340928 bytes
  
IAR Workbench Project file converter for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\cwtdarmlib.dll
  05/Mar/2013 06:04:52, 840192 bytes
  
SEGGER J-Link interface DLL
  4.64a (4.64.1.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jlinkarm.dll
  01/Mar/2013 12:21:20, 5265768 bytes
  
2.0.0.2 (2.0.0.2)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jtag_usb.dll
  09/May/2012 09:55:24, 435712 bytes
  
JTAG_USB2
  2, 0, 0, 8 (2.0.0.8)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\JTAG_USB2.dll
  09/May/2012 09:55:26, 163840 bytes
  
mac_conn.dll
  2.0.0.0 (2.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\mac_con.dll
  09/May/2012 09:55:24, 40960 bytes
  
mac_enet.dll
  2.0.0.0 (2.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\mac_enet.dll
  09/May/2012 09:55:24, 49152 bytes
  
2.0.0.2 (2.0.0.2)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\mac_lpt.dll
  09/May/2012 09:55:26, 426496 bytes
  
USBDriver for STLink
  4.2.3.0 (4.2.3.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\STLinkUSBDriver.dll
  22/Oct/2012 21:57:54, 65536 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm.dll
  05/Mar/2013 06:05:52, 1664512 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm.ENU.dll
  05/Mar/2013 06:05:40, 117760 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm.JPN.dll
  05/Mar/2013 06:05:40, 107520 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_angel.dll
  05/Mar/2013 06:05:46, 816128 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_angel.ENU.dll
  05/Mar/2013 06:05:36, 13312 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_angel.JPN.dll
  05/Mar/2013 06:05:36, 10240 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_cmsisdap.dll
  05/Mar/2013 06:05:20, 852992 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_cmsisdap.ENU.dll
  05/Mar/2013 06:05:12, 15360 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_cmsisdap.JPN.dll
  05/Mar/2013 06:05:10, 12288 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_gdbserv.dll
  05/Mar/2013 06:05:44, 807936 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_gdbserv.ENU.dll
  05/Mar/2013 06:05:34, 13312 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_gdbserv.JPN.dll
  05/Mar/2013 06:05:34, 10240 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_iarrom.dll
  05/Mar/2013 06:05:36, 545792 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_iarrom.ENU.dll
  05/Mar/2013 06:05:28, 12800 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_iarrom.JPN.dll
  05/Mar/2013 06:05:26, 10240 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_iJet.dll
  05/Mar/2013 06:05:50, 882176 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_iJet.ENU.dll
  05/Mar/2013 06:05:10, 16896 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_iJet.JPN.dll
  05/Mar/2013 06:05:08, 13824 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_jlink.dll
  05/Mar/2013 06:05:36, 873472 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_jlink.ENU.dll
  05/Mar/2013 06:05:24, 15872 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_jlink.JPN.dll
  05/Mar/2013 06:05:24, 13312 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_lmiftdi.dll
  05/Mar/2013 06:05:18, 813568 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_lmiftdi.ENU.dll
  05/Mar/2013 06:05:08, 12800 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_lmiftdi.JPN.dll
  05/Mar/2013 06:05:08, 10240 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_macraigor.dll
  05/Mar/2013 06:05:20, 834048 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_macraigor.ENU.dll
  05/Mar/2013 06:05:08, 14336 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_macraigor.JPN.dll
  05/Mar/2013 06:05:08, 11264 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_PEMicro.dll
  05/Mar/2013 06:05:34, 828416 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_PEMicro.ENU.dll
  05/Mar/2013 06:05:22, 13312 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_PEMicro.JPN.dll
  05/Mar/2013 06:05:22, 10752 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_rdi.dll
  05/Mar/2013 06:05:32, 545280 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_rdi.ENU.dll
  05/Mar/2013 06:05:42, 13312 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_rdi.JPN.dll
  05/Mar/2013 06:05:20, 10752 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_stlink.dll
  05/Mar/2013 06:05:18, 545792 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_stlink.ENU.dll
  05/Mar/2013 06:05:42, 12800 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_stlink.JPN.dll
  05/Mar/2013 06:05:42, 10240 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_thirdparty.dll
  05/Mar/2013 06:05:32, 537088 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_thirdparty.ENU.dll
  05/Mar/2013 06:05:40, 12800 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_thirdparty.JPN.dll
  05/Mar/2013 06:05:40, 10240 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_XDS100.dll
  05/Mar/2013 06:05:24, 818176 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_XDS100.ENU.dll
  05/Mar/2013 06:05:14, 12800 bytes
  
IAR Workbench Target Descriptor for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\swtdarm_XDS100.JPN.dll
  05/Mar/2013 06:05:12, 10240 bytes
  
template.dll
  3.0.4.0 (3.0.4.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\template.dll
  09/May/2012 09:55:24, 2232320 bytes
  
1.34.0.6 (1.34.0.6)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\unit_ngs_arm.dll
  16/Nov/2012 22:07:48, 1233800 bytes
  
2.0.0.5 (2.0.0.5)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\wigglers.dll
  09/May/2012 09:55:26, 123904 bytes
  
CMSIS-DAP DLL
  1.1.0.0 (1.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\CMSIS_DAP.dll
  05/Mar/2013 08:20:50, 38912 bytes
  
USB Communication DLL
  2, 29, 0, 0 (2.29.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\CUSB.dll
  05/Mar/2013 08:20:50, 67072 bytes
  
SigEmu ARM DLL
  3, 19, 0, 0 (3.19.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\EARM.dll
  05/Mar/2013 08:20:48, 758272 bytes
  
JTAGjet PLD/FPGA Programming DLL 
  2, 3, 0, 0 (2.3.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\JTAGProgrammer.dll
  05/Mar/2013 08:20:48, 57344 bytes
  
JTAG Test DLL
  2, 2, 0, 0 (2.2.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\JtagTestDLL.dll
  05/Mar/2013 08:20:48, 140800 bytes
  
SigA2D
  1, 20, 0, 0 (1.20.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigA2D.dll
  05/Mar/2013 08:20:48, 61440 bytes
  
DLL API Manager DLL
  1, 61, 0, 0 (1.61.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigAPI.dll
  05/Mar/2013 08:20:48, 108544 bytes
  
SigChan
  1, 16, 0, 0 (1.16.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigChan.dll
  05/Mar/2013 08:20:48, 73216 bytes
  
SigCmdInterpreter Dynamic Link Library
  1, 12, 0, 0 (1.12.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigCmdInterpreter.dll
  05/Mar/2013 08:20:50, 68096 bytes
  
SigDapCmsis DLL
  1, 1, 0, 0 (1.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigDapCmsis.dll
  05/Mar/2013 08:20:48, 35840 bytes
  
SigDapJet DLL
  1, 0, 0, 0 (1.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigDapJet.dll
  05/Mar/2013 08:20:48, 144384 bytes
  
SigETMDecoder - ETM/ITM Decoder
  1, 38, 0, 0 (1.38.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigETMDecoder.dll
  05/Mar/2013 08:20:48, 37888 bytes
  
Flash Programming/Access DLL
  2, 4, 0, 0 (2.4.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigFlashID.dll
  05/Mar/2013 08:20:48, 50176 bytes
  
SigJtag
  1, 45, 0, 0 (1.45.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigJtag.dll
  05/Mar/2013 08:20:48, 170496 bytes
  
SigJtagCmsis DLL
  1, 1, 0, 0 (1.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigJtagCmsis.dll
  05/Mar/2013 08:20:48, 36864 bytes
  
SigProbe
  1, 16, 0, 0 (1.16.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigProbe.dll
  05/Mar/2013 08:20:48, 79872 bytes
  
SigProbeCmsis
  1, 1, 0, 0 (1.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigProbeCmsis.dll
  05/Mar/2013 08:20:48, 45056 bytes
  
SigSWO
  1, 16, 0, 0 (1.16.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigSWO.dll
  05/Mar/2013 08:20:48, 64512 bytes
  
Test GUI DLL
  2.01.00 (2.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigTestGUI.dll
  05/Mar/2013 08:20:48, 47104 bytes
  
SigTManager.dll
  1, 1, 0, 0 (1.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigTManager.dll
  05/Mar/2013 08:20:50, 40960 bytes
  
JTAGjet ETM Control DLL
  1, 64, 0, 0 (1.64.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigTraceJETM.dll
  05/Mar/2013 08:20:48, 178176 bytes
  
1, 12, 0, 0 (1.12.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigXDCR.dll
  05/Mar/2013 08:20:50, 59392 bytes
  
SigXTrace - eXternal access to Trace functionality
  1, 29, 0, 0 (1.29.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\SigXTrace.dll
  05/Mar/2013 08:20:50, 33792 bytes
  
TraceMDI - Trace MDI Window
  1, 43, 0, 0 (1.43.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\TraceMDI.dll
  05/Mar/2013 08:20:48, 94208 bytes
  
Trace Server DLL
  1, 24, 0, 0 (1.24.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\TraceWin.dll
  05/Mar/2013 08:20:48, 31744 bytes
  
UConnect DLL
  1, 59, 0, 0 (1.59.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\UConnect.dll
  05/Mar/2013 08:20:48, 161280 bytes
  
GUI for ETM/ETB/Coresight Control DLL
  1, 8, 0, 0 (1.8.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\UJETMControl.dll
  05/Mar/2013 08:20:48, 110080 bytes
  
USB EEPROM Access DLL
  3, 1, 0, 0 (3.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\USBEEPROM.dll
  05/Mar/2013 08:20:50, 41472 bytes
  
USigJtag DLL
  1, 10, 0, 0 (1.10.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\jet\bin\USigJtag.dll
  05/Mar/2013 08:20:48, 184832 bytes
  
1.10.0.0 (1.10.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\pemicro\icdarmcortex_dll_v110.dll
  16/Nov/2012 22:07:48, 2668720 bytes
  
2.1.0.5 (2.1.0.5)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\pemicro\pemicro_serialcm2.dll
  16/Nov/2012 22:07:48, 661504 bytes
  
OSBDM Dynamic Link Library
  1, 0, 29, 1 (1.0.29.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\pemicro\peosbdmv1.dll
  16/Nov/2012 22:07:48, 128632 bytes
  
SVD Converter
  2.75  (2.75.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\CMSIS\SVD\SVDConv.exe
  28/Mar/2012 12:03:10, 321536 bytes
  
Установщик пакетов драйверов
  2.1 (2.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\jet\USB\32-bit\dpinst.exe
  05/Mar/2013 08:20:50, 921992 bytes
  
Установщик пакетов драйверов
  2.1 (2.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\jet\USB\64-bit\dpinst.exe
  05/Mar/2013 08:20:50, 1050104 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Jlink\InstDrivers.exe
  01/Mar/2013 12:21:26, 51560 bytes
  
Установщик пакетов драйверов
  2.1 (2.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Jlink\CDC\dpinst_x64.exe
  01/Mar/2013 12:21:24, 1046392 bytes
  
Установщик пакетов драйверов
  2.1 (2.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Jlink\CDC\dpinst_x86.exe
  01/Mar/2013 12:21:26, 920952 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Jlink\CDC\InstDriversCDC.exe
  01/Mar/2013 12:21:24, 51560 bytes
  
Driver Package Installer
  2.01 (2.0.1.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Jlink\x64\DPInst.exe
  01/Mar/2013 12:21:24, 845736 bytes
  
Driver Package Installer
  2.01 (2.0.1.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Jlink\x86\DPInst.exe
  01/Mar/2013 12:21:24, 521128 bytes
  
Setup Launcher                                        
  2.58.0000                                        (16.0.0.435)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Macraigor\ocd_cmdr.exe
  09/May/2012 09:55:32, 8974326 bytes
  
Setup Launcher Unicode
  1.00.0000 (1.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\Macraigor\ocd_cmdr_64bit.exe
  09/May/2012 09:55:32, 7740786 bytes
  
P&E Device Drivers
  11.1.0.0 (11.1.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\pemicro\PEDrivers_install.exe
  16/Nov/2012 22:07:50, 4412280 bytes
  
InstallScript Setup Launcher                                        
  16.0.435                                         (16.0.0.435)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\ST-Link\ST-Link_V2_USBdriver.exe
  22/Oct/2012 21:58:00, 11976628 bytes
  
Texas Instruments Emulation 5.0.470.2 Setup
  5.0.747.0 (5.0.747.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\ti-xds\ti_emupack_setup.exe
  11/Dec/2012 20:02:36, 33208028 bytes
  
FTD2XX library
  3.01.08 (3.1.8.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\STComstickFTDI\ftd2xx.dll
  04/Jul/2012 09:11:28, 176128 bytes
  
FTLang
  1, 0, 0, 1 (1.0.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\STComstickFTDI\FTLang.dll
  04/Jul/2012 09:11:28, 102400 bytes
  
FTDI Ports Class Installer
  2.00.00.1  (2.0.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\STComstickFTDI\ftserui2.dll
  04/Jul/2012 09:11:28, 33360 bytes
  
FTDI USB Serial Converter Property Page Provider
  1.2.0.1 (1.2.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\amd64\ftbusui.dll
  04/Jul/2012 09:11:28, 143688 bytes
  
FT2232 VCP CoInstaller
  2.00.00.1 (2.0.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\amd64\ftcserco.dll
  04/Jul/2012 09:11:28, 51528 bytes
  
FTD2XX library
  3.01.19 (3.1.19.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\amd64\ftd2xx64.dll
  04/Jul/2012 09:11:28, 330056 bytes
  
FTDI Multi-Lingual Property Page Text Library
  1, 4, 0, 1 (1.4.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\amd64\ftlang.dll
  04/Jul/2012 09:11:28, 284992 bytes
  
FTDI Virtual COM Port Property Page Provider
  2.06.00.1  built by: WinDDK (2.6.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\amd64\ftserui2.dll
  04/Jul/2012 09:11:28, 55112 bytes
  
FTDI USB Serial Converter Property Page Provider
  1.2.0.1 (1.2.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\i386\ftbusui.dll
  04/Jul/2012 09:11:28, 120136 bytes
  
FT2232 VCP CoInstaller
  2.00.00.1 (2.0.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\i386\ftcserco.dll
  04/Jul/2012 09:11:28, 54088 bytes
  
FTD2XX library
  3.01.19 (3.1.19.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\i386\ftd2xx.dll
  04/Jul/2012 09:11:28, 206144 bytes
  
FTDI Multi-Lingual Property Page Text Library
  1, 4, 0, 1 (1.4.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\i386\ftlang.dll
  04/Jul/2012 09:11:28, 197952 bytes
  
FTDI Virtual COM Port Property Page Provider
  2.06.00.1  built by: WinDDK (2.6.0.1)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisFTDI\i386\ftserui2.dll
  04/Jul/2012 09:11:28, 52552 bytes
  
USB Device Firmware Upgrade Library
  INTERNAL (0.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\amd64\lmdfu64.dll
  04/Jul/2012 09:11:30, 242688 bytes
  
A DLL used to interface Windows example applications to the WinUSB subsystem
  INTERNAL (0.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\amd64\lmusbdll64.dll
  04/Jul/2012 09:11:30, 245760 bytes
  
A DLL used to interface Windows example applications to the WinUSB subsystem
  INTERNAL (0.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\amd64\lmusbicdi64.dll
  04/Jul/2012 09:11:30, 245760 bytes
  
WDF Coinstaller
  1.9.7600.16385 (win7_rtm.090713-1255) (1.9.7600.16385)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\amd64\WdfCoInstaller01009.dll
  04/Jul/2012 09:11:30, 1721576 bytes
  
Windows Driver Foundation - User-mode Platform Device Update Co-Installer
  6.1.7600.16385 (win7_rtm.090713-1255) (6.1.7600.16385)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\amd64\winusbcoinstaller2.dll
  04/Jul/2012 09:11:30, 1002728 bytes
  
Windows Driver Foundation - User-mode Platform Device Update Co-Installer
  6.1.7600.16385 (win7_rtm.090713-1255) (6.1.7600.16385)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\amd64\WUDFUpdate_01009.dll
  04/Jul/2012 09:11:30, 2152176 bytes
  
USB Device Firmware Upgrade Library
  INTERNAL (0.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\i386\lmdfu.dll
  04/Jul/2012 09:11:30, 208896 bytes
  
A DLL used to interface Windows example applications to the WinUSB subsystem
  INTERNAL (0.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\i386\lmusbdll.dll
  04/Jul/2012 09:11:30, 210432 bytes
  
A DLL used to interface Windows example applications to the WinUSB subsystem
  INTERNAL (0.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\i386\lmusbicdi.dll
  04/Jul/2012 09:11:30, 210432 bytes
  
WDF Coinstaller
  1.9.7600.16385 (win7_rtm.090713-1255) (1.9.7600.16385)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\i386\WdfCoInstaller01009.dll
  04/Jul/2012 09:11:30, 1461992 bytes
  
Windows Driver Foundation - User-mode Platform Device Update Co-Installer
  6.1.7600.16385 (win7_rtm.090713-1255) (6.1.7600.16385)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\i386\winusbcoinstaller2.dll
  04/Jul/2012 09:11:30, 851176 bytes
  
Windows Driver Foundation - User-mode Platform Device Update Co-Installer
  6.1.7600.16385 (win7_rtm.090713-1255) (6.1.7600.16385)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\drivers\StellarisICDI\i386\WUDFUpdate_01009.dll
  04/Jul/2012 09:11:30, 1837296 bytes
  
Hcc IAR Plugin
  1.0.0.7 (1.0.0.7)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\middleware\HCCWare\HCCWare.dll
  21/Feb/2013 02:26:18, 706560 bytes
  
IAR EWARM RTOS Awareness Viewer Plug-In
  5.0 (5.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\AVIX\AVIXPluginIarEwarm_v0500.dll
  21/Feb/2013 02:26:16, 748544 bytes
  
IAR C-SPY RTOS/CMX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMX\CmxArmPlugin.dll
  05/Mar/2013 06:10:48, 851456 bytes
  
IAR C-SPY RTOS/CMX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMX\CmxArmPlugin.ENU.dll
  05/Mar/2013 06:09:42, 12800 bytes
  
IAR C-SPY RTOS/CMX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMX\CmxArmPlugin.JPN.dll
  05/Mar/2013 06:09:40, 11264 bytes
  
IAR C-SPY RTOS/CMX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMX\CmxTinyArmPlugin.dll
  05/Mar/2013 06:10:50, 846848 bytes
  
IAR C-SPY RTOS/CMX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.dll
  05/Mar/2013 06:09:48, 12800 bytes
  
IAR C-SPY RTOS/CMX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.dll
  05/Mar/2013 06:09:48, 11264 bytes
  
IAR C-SPY RTOS/CMXEclipse Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMXEclipse\CMXEclipsearmPlugin.dll
  05/Mar/2013 06:10:58, 820224 bytes
  
IAR C-SPY RTOS/CMXEclipse Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMXEclipse\CMXEclipsearmPlugin.ENU.dll
  05/Mar/2013 06:10:12, 12800 bytes
  
IAR C-SPY RTOS/CMXEclipse Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\CMXEclipse\CMXEclipsearmPlugin.JPN.dll
  05/Mar/2013 06:10:10, 11264 bytes
  
SEGGER embOS IAR-Plugin
  6, 0, 6, 9 (6.0.6.9)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\embOS\embOSPlugin.dll
  21/Feb/2013 02:26:16, 594432 bytes
  
C-SPY 6.x MQX RTOS Plugin DLL
  4.6.5 (4.6.5.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\MQX\MQXRtosPluginARM.dll
  21/Feb/2013 02:26:16, 1353728 bytes
  
OpenRTOSPlugin DLL
  2, 0, 0, 0 (2.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\OpenRTOS\OpenRTOSPlugin.dll
  21/Feb/2013 02:26:18, 630272 bytes
  
PowerPac RTOS Plugin
  6, 0, 6, 4 (6.0.6.4)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\PowerPac\PowerPacRTOSPlugin.dll
  13/Apr/2011 14:43:26, 596480 bytes
  
RTXC_K3_Plugin DLL
  1, 0, 0, 154 (1.0.0.154)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\Quadros\Quadros_EWB6_Plugin.dll
  21/Feb/2013 02:26:18, 786432 bytes
  
SafeRTOSPlugin DLL
  2, 0, 0, 0 (2.0.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\SafeRTOS\SafeRTOSPlugin.dll
  21/Feb/2013 02:26:16, 640000 bytes
  
IAR C-SPY RTOS/THREADX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\ThreadX\ThreadXArmPlugin.dll
  05/Mar/2013 06:10:54, 1031680 bytes
  
IAR C-SPY RTOS/THREADX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.dll
  05/Mar/2013 06:09:24, 15360 bytes
  
IAR C-SPY RTOS/THREADX Plugin for ARM
  6.50.3.4744 (6.50.3.4744)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.dll
  05/Mar/2013 06:09:22, 12800 bytes
  
µC/OS-II <= 2.86 KA Plug-in for C-SPY DLL
  2.5.0 (2.5.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.dll
  01/Mar/2013 11:56:04, 681472 bytes
  
µC/OS-II >= 2.87 KA Plug-in for C-SPY DLL
  2.5.1 (2.5.1.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.dll
  01/Mar/2013 11:56:04, 688640 bytes
  
µC/OS-III KA Plug-in for C-SPY DLL
  3.0.6 (3.0.6.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.dll
  01/Mar/2013 11:56:04, 783872 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\RTOS\SEGGER\Util\embOSView.exe
  21/Feb/2013 02:28:00, 159744 bytes
  
SEGGER J-Link interface DLL
  4.46f (4.46.6.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\RTOS\SEGGER\Util\JLinkARM.dll
  21/Feb/2013 02:28:00, 4450192 bytes
  
=== Install subdirectory: common ===
  
IAR CSpyBat
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CSpyBat.exe
  28/Feb/2013 21:56:36, 2493952 bytes
  
IAR CSpyServer
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CSpyServer.exe
  28/Feb/2013 22:01:38, 3187200 bytes
  
IAR Build Utility
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarBuild.exe
  28/Feb/2013 22:05:06, 128000 bytes
  
IAR Embedded Workbench IDE
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarIdePm.exe
  28/Feb/2013 22:05:42, 884224 bytes
  
IAR Unpacker
  2.12.4.471 (2.12.4.471)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarUnpacker.exe
  19/Dec/2012 12:48:20, 1007104 bytes
  
IAR License Info
  2.12.4.471 (2.12.4.471)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\LicenseInfo.exe
  19/Dec/2012 12:48:20, 1003008 bytes
  
IAR License Manager
  2.12.4.471 (2.12.4.471)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\LicenseManager.exe
  19/Dec/2012 12:48:20, 5436416 bytes
  
IAR Lms Check Key
  2.12.4.471 (2.12.4.471)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\LmsCheckKey.exe
  19/Dec/2012 12:48:20, 101376 bytes
  
Sentinel RMS Development Kit License Manager
  8, 5, 0, 0021 (8.5.0.21)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\lservnt.exe
  19/Dec/2012 12:48:20, 892928 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\SourceIndexer.exe
  28/Feb/2013 21:09:24, 19456 bytes
  
IAR Browse Information
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\BrowseInfo.dll
  28/Feb/2013 21:45:20, 485888 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CheckKey.dll
  19/Dec/2012 12:48:20, 57344 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CheckKeyV2.dll
  19/Dec/2012 12:48:20, 237568 bytes
  
IAR CSpyBat Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CSpyBat.ENU.dll
  28/Feb/2013 21:49:06, 6144 bytes
  
IAR CSpyBat Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CSpyBat.JPN.dll
  28/Feb/2013 21:49:06, 4608 bytes
  
IAR CSpyServer Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CSpyServer.ENU.dll
  28/Feb/2013 21:49:12, 7168 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\CSpyServices.dll
  28/Feb/2013 21:53:56, 1974272 bytes
  
IAR C-SPY Debugger GUI
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\DebuggerGui.dll
  28/Feb/2013 22:11:40, 3904512 bytes
  
IAR C-SPY Debugger GUI Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\DebuggerGui.ENU.dll
  28/Feb/2013 22:07:04, 72704 bytes
  
IAR C-SPY Debugger GUI Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\DebuggerGui.JPN.dll
  28/Feb/2013 22:07:02, 61952 bytes
  
IAR Find In Files
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\FindInFiles.dll
  28/Feb/2013 22:06:50, 637952 bytes
  
IAR Find In Files Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\FindInFiles.ENU.dll
  28/Feb/2013 22:05:46, 5120 bytes
  
IAR Find In Files Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\FindInFiles.JPN.dll
  28/Feb/2013 22:05:44, 5120 bytes
  
IAR Build Utility Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarBuild.ENU.dll
  28/Feb/2013 22:04:38, 3584 bytes
  
IAR Build Utility Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarBuild.JPN.dll
  28/Feb/2013 22:04:38, 3072 bytes
  
IAR Embedded Workbench IDE Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarIdePm.ENU.dll
  28/Feb/2013 22:02:52, 504320 bytes
  
IAR Embedded Workbench IDE Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IarIdePm.JPN.dll
  28/Feb/2013 22:02:50, 499712 bytes
  
ICU Data DLL
  4, 4, 2, 0 (4.4.2.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\icudt44.dll
  28/Feb/2013 21:09:44, 14940672 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ICUEncodingDetector.dll
  28/Feb/2013 21:09:44, 107008 bytes
  
ICU I18N DLL
  4, 4, 2, 0 (4.4.2.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\icuin44.dll
  28/Feb/2013 21:09:42, 1585152 bytes
  
ICU Common DLL
  4, 4, 2, 0 (4.4.2.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\icuuc44.dll
  28/Feb/2013 21:09:44, 1153024 bytes
  
IAR IDE Framework
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IdeFramework.dll
  28/Feb/2013 21:52:52, 1678336 bytes
  
IAR IDE Framework Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IdeFramework.ENU.dll
  28/Feb/2013 21:52:22, 8192 bytes
  
IAR IDE Framework Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\IdeFramework.JPN.dll
  28/Feb/2013 21:52:20, 8192 bytes
  
IAR C-SPY Debugger Kernel
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\kernel.dll
  28/Feb/2013 22:09:22, 3832320 bytes
  
IAR C-SPY Debugger Kernel Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\kernel.ENU.dll
  28/Feb/2013 22:05:44, 14848 bytes
  
IAR C-SPY Debugger Kernel Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\kernel.JPN.dll
  28/Feb/2013 22:07:00, 11264 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\libclang.dll
  28/Feb/2013 21:09:26, 5029376 bytes
  
IAR Log Window
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\LogWindow.dll
  28/Feb/2013 22:04:52, 404480 bytes
  
IAR Log Window Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\LogWindow.ENU.dll
  28/Feb/2013 21:49:18, 10752 bytes
  
IAR Log Window Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\LogWindow.JPN.dll
  28/Feb/2013 21:49:18, 10240 bytes
  
IAR PBI File Read and Write
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\PbiRdWr.dll
  28/Feb/2013 21:42:02, 24576 bytes
  
IAR Project Manager Engine
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ProjectManagerEngine.dll
  28/Feb/2013 22:00:14, 1492992 bytes
  
IAR Project Manager Engine Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ProjectManagerEngine.ENU.dll
  28/Feb/2013 21:49:12, 15360 bytes
  
IAR Project Manager Engine Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ProjectManagerEngine.JPN.dll
  28/Feb/2013 21:49:10, 10752 bytes
  
IAR Project Manager Gui
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ProjectManagerGui.dll
  28/Feb/2013 22:09:44, 1273344 bytes
  
IAR Project Manager Gui Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ProjectManagerGui.ENU.dll
  28/Feb/2013 21:49:10, 187904 bytes
  
IAR Project Manager Gui Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\ProjectManagerGui.JPN.dll
  28/Feb/2013 21:49:08, 177664 bytes
  
Scintilla.DLL - a Source Editing Component
  6.5.0 (6.5.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\SciLexer.dll
  28/Feb/2013 21:09:36, 643584 bytes
  
Scintilla.DLL - a Source Editing Component
  6.5.0 (6.5.0.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\Scintilla.dll
  28/Feb/2013 21:09:36, 316928 bytes
  
IAR Text Editor
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\TextEditor.dll
  28/Feb/2013 22:01:38, 1119744 bytes
  
IAR Text Editor Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\TextEditor.ENU.dll
  28/Feb/2013 21:49:14, 32768 bytes
  
IAR Text Editor Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\TextEditor.JPN.dll
  28/Feb/2013 21:49:14, 27648 bytes
  
IAR VCS Provider
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\VcsProvider.dll
  28/Feb/2013 21:51:06, 15872 bytes
  
Shared Library for Xerces-C++ Version 3.1.1
  3, 1, 1 (3.1.1.0)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\xerces-c_3_1.dll
  28/Feb/2013 21:08:52, 1887744 bytes
  
IAR XmlLib
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin\XmlLib.dll
  28/Feb/2013 21:44:30, 99840 bytes
  
IAR Code Coverage Plug-in
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\CodeCoverage\CodeCoverage.dll
  28/Feb/2013 22:06:30, 697344 bytes
  
IAR Code Coverage Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\CodeCoverage\CodeCoverage.ENU.dll
  28/Feb/2013 22:09:50, 11264 bytes
  
IAR Code Coverage Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\CodeCoverage\CodeCoverage.JPN.dll
  28/Feb/2013 22:09:48, 10752 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\LibSupportService\LibSupportService.dll
  28/Feb/2013 22:02:48, 2159616 bytes
  
IAR LibSupport Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\LibSupportService\LibSupportService.ENU.dll
  28/Feb/2013 21:49:20, 10752 bytes
  
IAR LibSupport Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\LibSupportService\LibSupportService.JPN.dll
  28/Feb/2013 21:49:20, 9728 bytes
  
IAR ORTI RTOS Plug-in
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\Orti\Orti.dll
  28/Feb/2013 22:04:36, 868352 bytes
  
IAR ORTI RTOS Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\Orti\Orti.ENU.dll
  28/Feb/2013 21:49:16, 9216 bytes
  
IAR ORTI RTOS Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\Orti\Orti.JPN.dll
  28/Feb/2013 21:49:16, 8192 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\ServiceCodeCoveragePlugin\ServiceCodeCoveragePlugin.dll
  28/Feb/2013 21:55:28, 2074112 bytes
  
IAR Code Coverage Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\ServiceCodeCoveragePlugin\ServiceCodeCoveragePlugin.ENU.dll
  28/Feb/2013 21:49:02, 11264 bytes
  
IAR Code Coverage Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\ServiceCodeCoveragePlugin\ServiceCodeCoveragePlugin.JPN.dll
  28/Feb/2013 21:49:00, 10752 bytes
  
IAR Symbols Plug-in
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\SymList\SymList.dll
  28/Feb/2013 22:02:46, 668672 bytes
  
IAR Symbols Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\SymList\SymList.ENU.dll
  28/Feb/2013 21:49:04, 3584 bytes
  
IAR Symbols Plug-in Language Specific Resources
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\SymList\SymList.JPN.dll
  28/Feb/2013 21:49:04, 3072 bytes
  
IAR uCProbe Plug-in
  6.5.5.2622 (6.5.5.2622)
  C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\uCProbe\uCProbePlugin.dll
  28/Feb/2013 22:09:56, 688128 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\uCProbe\uCProbePlugin.ENU.dll
  28/Feb/2013 22:09:46, 1536 bytes
  
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\plugins\uCProbe\uCProbePlugin.JPN.dll
  28/Feb/2013 22:09:48, 1536 bytes
  
gcc version is :

Code: Select all

make -v :
GNU Make 4.0
Built for x86_64-pc-cygwin

arm-none-eabi-gcc -v :
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=c:/users/ухээрфшщ/mentorgraphics/sourcery_codebench_lite_for
_arm_eabi/bin/../libexec/gcc/arm-none-eabi/4.8.3/lto-wrapper.exe
Target: arm-none-eabi
Configured with: /scratch/maciej/arm-eabi-2014.05-rel/src/gcc-4.8-2014.05/config
ure --build=i686-pc-linux-gnu --host=i686-mingw32 --target=arm-none-eabi --enabl
e-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable
-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='%{save-temps
: -fverbose-asm} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS
_SOURCERYGXX_REV__=28' --enable-languages=c,c++ --disable-shared --enable-lto --
with-newlib --with-pkgversion='Sourcery CodeBench Lite 2014.05-28' --with-bugurl
=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourc
ery --with-headers=yes --with-sysroot=/opt/codesourcery/arm-none-eabi --with-bui
ld-sysroot=/scratch/maciej/arm-eabi-2014.05-rel/install/host-i686-mingw32/opt/co
desourcery/arm-none-eabi --with-libiconv-prefix=/scratch/maciej/arm-eabi-2014.05
-rel/obj/pkg-2014.05-28-arm-none-eabi/arm-2014.05-28-arm-none-eabi.extras/host-l
ibs-i686-mingw32/usr --with-gmp=/scratch/maciej/arm-eabi-2014.05-rel/obj/pkg-201
4.05-28-arm-none-eabi/arm-2014.05-28-arm-none-eabi.extras/host-libs-i686-mingw32
/usr --with-mpfr=/scratch/maciej/arm-eabi-2014.05-rel/obj/pkg-2014.05-28-arm-non
e-eabi/arm-2014.05-28-arm-none-eabi.extras/host-libs-i686-mingw32/usr --with-mpc
=/scratch/maciej/arm-eabi-2014.05-rel/obj/pkg-2014.05-28-arm-none-eabi/arm-2014.
05-28-arm-none-eabi.extras/host-libs-i686-mingw32/usr --with-isl=/scratch/maciej
/arm-eabi-2014.05-rel/obj/pkg-2014.05-28-arm-none-eabi/arm-2014.05-28-arm-none-e
abi.extras/host-libs-i686-mingw32/usr --with-cloog=/scratch/maciej/arm-eabi-2014
.05-rel/obj/pkg-2014.05-28-arm-none-eabi/arm-2014.05-28-arm-none-eabi.extras/hos
t-libs-i686-mingw32/usr --disable-libgomp --disable-libitm --disable-libatomic -
-disable-libssp --enable-poison-system-directories --with-build-time-tools=/scra
tch/maciej/arm-eabi-2014.05-rel/obj/tools-i686-pc-linux-gnu-2014.05-28-arm-none-
eabi-i686-mingw32/arm-none-eabi/bin --with-build-time-tools=/scratch/maciej/arm-
eabi-2014.05-rel/obj/tools-i686-pc-linux-gnu-2014.05-28-arm-none-eabi-i686-mingw
32/arm-none-eabi/bin SED=sed
Thread model: single
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-28)


may be we should use high optimisation ?

Re: binary search algorithm research

Posted: Thu Feb 19, 2015 12:30 pm
by AndreyB
Great job @!

I am pretty surprised that both algos had pretty much the same performance most of the time - I was expecting more of a difference. That's why we need tests :)

So IAR in optimization for speed the proposed algorithm is in fact 5 times faster? Interesting. Can you please play more with different gcc options? See -Ox switch in the Makefile and could be they have other optimization-related switches.

Re: binary search algorithm research

Posted: Thu Feb 19, 2015 3:02 pm
by rus084

Code: Select all

rusefi-gcc-O3.hex : 716 909 bytes
2015-02-19 17_33: EngineState: totalOld=36594179 ticks
2015-02-19 17_33: EngineState: totalNew=37078084 ticks


rusefi-gcc-Ofast.hex : 717 044 bytes
2015-02-19 17_48: EngineState: totalOld=36671818 ticks
2015-02-19 17_48: EngineState: totalNew=37052678 ticks


rusefi-gcc-Os.hex : 663 179 bytes
2015-02-19 17_49: EngineState: totalOld=37282632 ticks
2015-02-19 17_49: EngineState: totalNew=37536773 ticks


rusefi-gcc-O0.hex 748 516 bytes
2015-02-19 17_54: EngineState: totalOld=38523293 ticks
2015-02-19 17_54: EngineState: totalNew=38924504 ticks

Re: binary search algorithm research

Posted: Thu Feb 19, 2015 3:16 pm
by AndreyB
Interesting. Can you add a 3rd implementation of the algorithm - unwrap the loop for length = 16?

Code: Select all

findIndex16() {
...
...
b = 7;
...
b = 3;
...
b = 1;
...
b = 0;
...

}
I am really interested in this super-fast IAR version of findIndex2. Can you de-compile three different IAR versions of the code? In GCC you run "arm-none-eabi-objdump -S rusefi.elf > rusefi.asm" to de-compile, not sure about IAR.

Re: binary search algorithm research

Posted: Thu Feb 19, 2015 4:07 pm
by rus084
it's decompiled binaries

Re: binary search algorithm research

Posted: Thu Feb 19, 2015 4:30 pm
by AndreyB
Ops, looks like efiAssert was half-enabled/half-disabled. Now it's disabled completely, now we need to re-run the test completely :(

Re: binary search algorithm research

Posted: Sat Feb 21, 2015 11:01 am
by rus084
i updated to version 6964
IAR :
low optimisation (default ) , size of hex file is 485 926bytes . result is :
2015-02-21 13_20: EngineState: totalOld=19279659 ticks
2015-02-21 13_20: EngineState: totalNew=16422206 ticks

high optimisation with max speed , size is 500 080bytes :
2015-02-21 13_33: EngineState: totalOld=12063895 ticks
2015-02-21 13_33: EngineState: totalNew=2270555 ticks

no optimisation , size is 502 171bytes :
2015-02-21 13_38: EngineState: totalOld=21688763 ticks
2015-02-21 13_38: EngineState: totalNew=18132371 ticks

GCC :
-O1 , size is 685 679bytes :
2015-02-21 13_43: EngineState: totalOld=37266493 ticks
2015-02-21 13_43: EngineState: totalNew=37574550 ticks

-O0 , size is 752 296bytes :
2015-02-21 13_47: EngineState: totalOld=38202641 ticks
2015-02-21 13_47: EngineState: totalNew=38684035 ticks

-Os , size is 666 959bytes :
2015-02-21 13_50: EngineState: totalOld=36410677 ticks
2015-02-21 13_50: EngineState: totalNew=36862974 ticks

-Ofast , size is 721 139 bytes :
2015-02-21 13_54: EngineState: totalOld=36410250 ticks
2015-02-21 13_54: EngineState: totalNew=36623076 ticks

build server http://rusefi.com/build_server/separate_files/rusefi_firmware.zip , 685 679bytes default gcc makefile with -O1

build server #2 http://rusefi.com/build_server/separate_files/rusefi_firmware.secondary_build_server.zip , 635 901 bytes :
2015-02-21 14_00: EngineState: totalOld=37459226 ticks
2015-02-21 14_00: EngineState: totalNew=37309688 ticks

Re: binary search algorithm research

Posted: Sat Feb 21, 2015 5:20 pm
by rus084
iar no optimisation new method decompile size is 0x44:

Code: Select all

int findIndex2(const float array[], unsigned size, float value) {
 8007080:	b430      	push	{r4, r5}
	efiAssert(!cisnan(value), "NaN in findIndex", 0);
	efiAssert(size > 1, "NaN in findIndex", 0);
//	if (size <= 1)
//		return size && *array <= value ? 0 : -1;

	signed i = 0;
 8007082:	2200      	movs	r2, #0
	//unsigned b = 1 << int(log(float(size) - 1) / 0.69314718055994530942);
	unsigned b = size >> 1; // in our case size is always a power of 2
 8007084:	084b      	lsrs	r3, r1, #1

08007086 <??findIndex2_0>:
	efiAssert(b + b == size, "Size not power of 2", -1);
	for (; b; b >>= 1) {
 8007086:	2b00      	cmp	r3, #0
 8007088:	d00d      	beq.n	80070a6 <??findIndex2_1>
		unsigned j = i | b;
 800708a:	ea53 0402 	orrs.w	r4, r3, r2
		 * it should be
		 * "if (j < size && array[j] <= value)"
		 * but in our case size is always power of 2 thus size is always more then j
		 */
		// efiAssert(j < size, "size", 0);
		if (array[j] <= value)
 800708e:	eb10 0584 	adds.w	r5, r0, r4, lsl #2
 8007092:	edd5 0a00 	vldr	s1, [r5]
 8007096:	eeb4 0a60 	vcmp.f32	s0, s1
 800709a:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 800709e:	db00      	blt.n	80070a2 <??findIndex2_2>
			i = j;
 80070a0:	0022      	movs	r2, r4

080070a2 <??findIndex2_2>:

	signed i = 0;
	//unsigned b = 1 << int(log(float(size) - 1) / 0.69314718055994530942);
	unsigned b = size >> 1; // in our case size is always a power of 2
	efiAssert(b + b == size, "Size not power of 2", -1);
	for (; b; b >>= 1) {
 80070a2:	085b      	lsrs	r3, r3, #1
 80070a4:	e7ef      	b.n	8007086 <??findIndex2_0>

080070a6 <??findIndex2_1>:
		 */
		// efiAssert(j < size, "size", 0);
		if (array[j] <= value)
			i = j;
	}
	return i || *array <= value ? i : -1;
 80070a6:	2a00      	cmp	r2, #0
 80070a8:	d106      	bne.n	80070b8 <??findIndex2_3>
 80070aa:	edd0 0a00 	vldr	s1, [r0]
 80070ae:	eeb4 0a60 	vcmp.f32	s0, s1
 80070b2:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 80070b6:	db00      	blt.n	80070ba <??findIndex2_4>

080070b8 <??findIndex2_3>:
 80070b8:	e001      	b.n	80070be <??findIndex2_5>

080070ba <??findIndex2_4>:
 80070ba:	f05f 32ff 	movs.w	r2, #4294967295

080070be <??findIndex2_5>:
 80070be:	0010      	movs	r0, r2
 80070c0:	bc30      	pop	{r4, r5}
 80070c2:	4770      	bx	lr

080070c4 <_Z9findIndexPKfif>:
iar no optimisation old method decompile size is 0x58

Code: Select all

int findIndex(const float array[], int size, float value) {
 80070c4:	b470      	push	{r4, r5, r6}
 80070c6:	0002      	movs	r2, r0
	efiAssert(!cisnan(value), "NaN in findIndex", 0);

	if (value < array[0])
 80070c8:	edd2 0a00 	vldr	s1, [r2]
 80070cc:	eeb4 0a60 	vcmp.f32	s0, s1
 80070d0:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 80070d4:	d502      	bpl.n	80070dc <??findIndex_0>
		return -1;
 80070d6:	f05f 30ff 	movs.w	r0, #4294967295
 80070da:	e01e      	b.n	800711a <??findIndex_1>

080070dc <??findIndex_0>:
	int middle;

	int left = 0;
 80070dc:	2300      	movs	r3, #0
	int right = size;
 80070de:	000c      	movs	r4, r1

080070e0 <??findIndex_2>:
#endif

		// todo: compare current implementation with
		// http://eigenjoy.com/2011/01/21/worlds-fastest-binary-search/
		// ?
		middle = (left + right) / 2;
 80070e0:	18e5      	adds	r5, r4, r3
 80070e2:	2602      	movs	r6, #2
 80070e4:	fb95 f5f6 	sdiv	r5, r5, r6
 80070e8:	0028      	movs	r0, r5

//		print("left=%d middle=%d right=%d: %f\r\n", left, middle, right, array[middle]);

		if (middle == left)
 80070ea:	4298      	cmp	r0, r3
 80070ec:	d015      	beq.n	800711a <??findIndex_1>

080070ee <??findIndex_4>:
			break;

		if (value < array[middle]) {
 80070ee:	eb12 0580 	adds.w	r5, r2, r0, lsl #2
 80070f2:	edd5 0a00 	vldr	s1, [r5]
 80070f6:	eeb4 0a60 	vcmp.f32	s0, s1
 80070fa:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 80070fe:	d501      	bpl.n	8007104 <??findIndex_5>
			right = middle;
 8007100:	0004      	movs	r4, r0
 8007102:	e7ed      	b.n	80070e0 <??findIndex_2>

08007104 <??findIndex_5>:
		} else if (value > array[middle]) {
 8007104:	eb12 0580 	adds.w	r5, r2, r0, lsl #2
 8007108:	edd5 0a00 	vldr	s1, [r5]
 800710c:	eef4 0a40 	vcmp.f32	s1, s0
 8007110:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 8007114:	d501      	bpl.n	800711a <??findIndex_1>
			left = middle;
 8007116:	0003      	movs	r3, r0
 8007118:	e7e2      	b.n	80070e0 <??findIndex_2>

0800711a <??findIndex_1>:
		} else {
			break;
		}
	}

	return middle;
 800711a:	bc70      	pop	{r4, r5, r6}
 800711c:	4770      	bx	lr

gcc -O1 new method decompile :

Code: Select all

08020340 <_Z10findIndex2PKfjf>:
 8020340:	b480      	push	{r7}
 8020342:	b089      	sub	sp, #36	; 0x24
 8020344:	af00      	add	r7, sp, #0
 8020346:	60f8      	str	r0, [r7, #12]
 8020348:	60b9      	str	r1, [r7, #8]
 802034a:	607a      	str	r2, [r7, #4]
 802034c:	2300      	movs	r3, #0
 802034e:	61fb      	str	r3, [r7, #28]
 8020350:	68bb      	ldr	r3, [r7, #8]
 8020352:	085b      	lsrs	r3, r3, #1
 8020354:	61bb      	str	r3, [r7, #24]
 8020356:	e015      	b.n	8020384 <_Z10findIndex2PKfjf+0x44>
 8020358:	69fa      	ldr	r2, [r7, #28]
 802035a:	69bb      	ldr	r3, [r7, #24]
 802035c:	4313      	orrs	r3, r2
 802035e:	617b      	str	r3, [r7, #20]
 8020360:	697b      	ldr	r3, [r7, #20]
 8020362:	009b      	lsls	r3, r3, #2
 8020364:	68fa      	ldr	r2, [r7, #12]
 8020366:	4413      	add	r3, r2
 8020368:	ed93 7a00 	vldr	s14, [r3]
 802036c:	edd7 7a01 	vldr	s15, [r7, #4]
 8020370:	eeb4 7ae7 	vcmpe.f32	s14, s15
 8020374:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 8020378:	d801      	bhi.n	802037e <_Z10findIndex2PKfjf+0x3e>
 802037a:	697b      	ldr	r3, [r7, #20]
 802037c:	61fb      	str	r3, [r7, #28]
 802037e:	69bb      	ldr	r3, [r7, #24]
 8020380:	085b      	lsrs	r3, r3, #1
 8020382:	61bb      	str	r3, [r7, #24]
 8020384:	69bb      	ldr	r3, [r7, #24]
 8020386:	2b00      	cmp	r3, #0
 8020388:	d1e6      	bne.n	8020358 <_Z10findIndex2PKfjf+0x18>
 802038a:	69fb      	ldr	r3, [r7, #28]
 802038c:	2b00      	cmp	r3, #0
 802038e:	d109      	bne.n	80203a4 <_Z10findIndex2PKfjf+0x64>
 8020390:	68fb      	ldr	r3, [r7, #12]
 8020392:	ed93 7a00 	vldr	s14, [r3]
 8020396:	edd7 7a01 	vldr	s15, [r7, #4]
 802039a:	eeb4 7ae7 	vcmpe.f32	s14, s15
 802039e:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 80203a2:	d801      	bhi.n	80203a8 <_Z10findIndex2PKfjf+0x68>
 80203a4:	69fb      	ldr	r3, [r7, #28]
 80203a6:	e001      	b.n	80203ac <_Z10findIndex2PKfjf+0x6c>
 80203a8:	f04f 33ff 	mov.w	r3, #4294967295
 80203ac:	4618      	mov	r0, r3
 80203ae:	3724      	adds	r7, #36	; 0x24
 80203b0:	46bd      	mov	sp, r7
 80203b2:	f85d 7b04 	ldr.w	r7, [sp], #4
 80203b6:	4770      	bx	lr
gcc -O1 old method decompile :

Code: Select all

080203b8 <_Z9findIndexPKfif>:
 80203b8:	b480      	push	{r7}
 80203ba:	b089      	sub	sp, #36	; 0x24
 80203bc:	af00      	add	r7, sp, #0
 80203be:	60f8      	str	r0, [r7, #12]
 80203c0:	60b9      	str	r1, [r7, #8]
 80203c2:	607a      	str	r2, [r7, #4]
 80203c4:	68fb      	ldr	r3, [r7, #12]
 80203c6:	ed93 7a00 	vldr	s14, [r3]
 80203ca:	edd7 7a01 	vldr	s15, [r7, #4]
 80203ce:	eeb4 7ae7 	vcmpe.f32	s14, s15
 80203d2:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 80203d6:	dd02      	ble.n	80203de <_Z9findIndexPKfif+0x26>
 80203d8:	f04f 33ff 	mov.w	r3, #4294967295
 80203dc:	e031      	b.n	8020442 <_Z9findIndexPKfif+0x8a>
 80203de:	2300      	movs	r3, #0
 80203e0:	61fb      	str	r3, [r7, #28]
 80203e2:	68bb      	ldr	r3, [r7, #8]
 80203e4:	61bb      	str	r3, [r7, #24]
 80203e6:	69fa      	ldr	r2, [r7, #28]
 80203e8:	69bb      	ldr	r3, [r7, #24]
 80203ea:	4413      	add	r3, r2
 80203ec:	0fda      	lsrs	r2, r3, #31
 80203ee:	4413      	add	r3, r2
 80203f0:	105b      	asrs	r3, r3, #1
 80203f2:	617b      	str	r3, [r7, #20]
 80203f4:	697a      	ldr	r2, [r7, #20]
 80203f6:	69fb      	ldr	r3, [r7, #28]
 80203f8:	429a      	cmp	r2, r3
 80203fa:	d100      	bne.n	80203fe <_Z9findIndexPKfif+0x46>
 80203fc:	e020      	b.n	8020440 <_Z9findIndexPKfif+0x88>
 80203fe:	697b      	ldr	r3, [r7, #20]
 8020400:	009b      	lsls	r3, r3, #2
 8020402:	68fa      	ldr	r2, [r7, #12]
 8020404:	4413      	add	r3, r2
 8020406:	ed93 7a00 	vldr	s14, [r3]
 802040a:	edd7 7a01 	vldr	s15, [r7, #4]
 802040e:	eeb4 7ae7 	vcmpe.f32	s14, s15
 8020412:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 8020416:	dd02      	ble.n	802041e <_Z9findIndexPKfif+0x66>
 8020418:	697b      	ldr	r3, [r7, #20]
 802041a:	61bb      	str	r3, [r7, #24]
 802041c:	e00f      	b.n	802043e <_Z9findIndexPKfif+0x86>
 802041e:	697b      	ldr	r3, [r7, #20]
 8020420:	009b      	lsls	r3, r3, #2
 8020422:	68fa      	ldr	r2, [r7, #12]
 8020424:	4413      	add	r3, r2
 8020426:	ed93 7a00 	vldr	s14, [r3]
 802042a:	edd7 7a01 	vldr	s15, [r7, #4]
 802042e:	eeb4 7ae7 	vcmpe.f32	s14, s15
 8020432:	eef1 fa10 	vmrs	APSR_nzcv, fpscr
 8020436:	d400      	bmi.n	802043a <_Z9findIndexPKfif+0x82>
 8020438:	e002      	b.n	8020440 <_Z9findIndexPKfif+0x88>
 802043a:	697b      	ldr	r3, [r7, #20]
 802043c:	61fb      	str	r3, [r7, #28]
 802043e:	e7d2      	b.n	80203e6 <_Z9findIndexPKfif+0x2e>
 8020440:	697b      	ldr	r3, [r7, #20]
 8020442:	4618      	mov	r0, r3
 8020444:	3724      	adds	r7, #36	; 0x24
 8020446:	46bd      	mov	sp, r7
 8020448:	f85d 7b04 	ldr.w	r7, [sp], #4
 802044c:	4770      	bx	lr
 802044e:	bf00      	nop

Re: binary search algorithm research

Posted: Sat Feb 21, 2015 6:16 pm
by AndreyB
rus084 wrote:high optimisation with max speed , size is 500 080bytes :
2015-02-21 13_33: EngineState: totalOld=12063895 ticks
2015-02-21 13_33: EngineState: totalNew=2270555 ticks
So that's the only one there findIndex2 is much faster, I wonder if that because our test was loop-unrolled?

Image

Re: binary search algorithm research

Posted: Sat Feb 21, 2015 6:34 pm
by rus084
when it compile with high optimisation and speed I saw much findindex not different functions in decompiled code when must be calls

I will try test it without loop unrolling.