Content originally posted in LPCWare by Alainbs on Tue May 28 09:40:17 MST 2013
I have a project where i have C files and ASM files (LPC1114 xpresso board and lpcxpresso IDE).
From C i call an assembly function where i read a GPIO and acquire the bits, after that i return again to C.
The problem is that when i add or delete lines of code in C the sampling time in assembly change.
.
Does the compiler optimize also my assembly code? What can i do?
[COLOR=royalblue]From my C code i make a call to the assembly function and got the last RAM address:[/COLOR]
unsigned int *lastRAMaddr;
[COLOR=black][/COLOR]
[COLOR=black]lastRAMaddr = (unsigned int*)asmfunction();[/COLOR]
.........
here process the data i got from sampling
........
[COLOR=#3f7f5f][COLOR=#3f7f5f][/COLOR][/COLOR][COLOR=royalblue]Sampling part look like this:[/COLOR]
[SIZE=2][/SIZE]
[SIZE=2]asmfunction:[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2]movs r0,#150[/SIZE]
[SIZE=2][/SIZE]
[SIZE=2][COLOR=darkred]readpin:[/COLOR][/SIZE]
[SIZE=2]ldr r2,[r3] //Read GPIO r3 hold the address of the gpio[/SIZE]
[SIZE=2]stm r1!,{r2} //Store Bit in Ram and increment address[/SIZE]
[SIZE=2]subs r0,#1 [/SIZE]
[SIZE=2]bne [COLOR=darkred]readpin[/COLOR][/SIZE]
[SIZE=2][COLOR=black]movs r0,#0[/COLOR][/SIZE]
[SIZE=2]orrs r0,r1 //Get last RAM address
bx lr[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]
[/COLOR][/SIZE][/COLOR][/SIZE][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]
[/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f][/COLOR][/SIZE][/COLOR][/SIZE]