I use the inline Asssembler on my RPi3 with 64Bit OS.
I have problems with the following inline Assembler instruction
asm add x1, x1, x7, lsl #3 end;
The Instruction should do the following thing:
x1 := x1 + (x7 shl 3)
but if I compile and check the results inklusive the assembly window I can see that the BarrelShift (lsl #3) is missing.
The Next Problem is a branch to a Object-function.
TTestObj1.testproc; begin end; TTestObj2.asmprob;nostackframe;assembler; asm stp x0, x30, [sp, #-16]! ldr x0, [x0, FTestObj1] bl TTestObj1.testproc ldp x0, x30 [sp], #16 end;
The Branch-Value/Address is not correct --> jumps to the branch line self (infinite loop)
I was under the impression, that the ADD in Assembly has three operands: Destination, Source1, Source2
You have 4 operands
I use the inline Asssembler on my RPi3 with 64Bit OS.This bug is fixed in trunk and fixes_3_2.
I have problems with the following inline Assembler instruction
asm add x1, x1, x7, lsl #3 end;
While not yet supported, for now this at least gives a compilation error rather than resulting in invalid code. The compiler does not yet parse "ldr x0, [x0, FTestObj1]" correctly either though (it seems to ignore the "FTestObj1"; even if it does not exist, no compilation error is printed).
TTestObj1.testproc; begin end; TTestObj2.asmprob;nostackframe;assembler; asm stp x0, x30, [sp, #-16]! ldr x0, [x0, FTestObj1] bl TTestObj1.testproc ldp x0, x30 [sp], #16 end;