I do not need to debug it, just to see
for example - asm code without optimization for:
i := Length(S);
look like:
Test.lpr:134 i := Length(S);
00000001000018C3 488b1d46170800 mov 0x81746(%rip),%rbx # 0x100083010
00000001000018CA 4885db test %rbx,%rbx
00000001000018CD 7404 je 0x1000018d3 <main+51>
00000001000018CF 488b5bf8 mov -0x8(%rbx),%rbx
00000001000018D3 4889d8 mov %rbx,%rax
00000001000018D6 482d00000080 sub $0xffffffff80000000,%rax
00000001000018DC 48baffffffff00000000 movabs $0xffffffff,%rdx
00000001000018E6 4839d0 cmp %rdx,%rax
00000001000018E9 7605 jbe 0x1000018f0 <main+80>
00000001000018EB e880b90000 callq 0x10000d270 <fpc_rangeerror>
00000001000018F0 89d8 mov %ebx,%eax
00000001000018F2 890528170800 mov %eax,0x81728(%rip) # 0x100083020
I believe it is possible to optimize it.
I want to see asm code when optimization is turned on.
For Delphi 2005 same code look like:
Without optimization:
Main.pas.279: i := Length(S);
004309D1 A148964300 mov eax,[$00439648]
004309D6 A354964300 mov [$00439654],eax
004309DB 833D5496430000 cmp dword ptr [$00439654],$00
004309E2 740F jz $004309f3
004309E4 A154964300 mov eax,[$00439654]
004309E9 83E804 sub eax,$04
004309EC 8B00 mov eax,[eax]
004309EE A354964300 mov [$00439654],eax
004309F3 A154964300 mov eax,[$00439654]
004309F8 A350964300 mov [$00439650],eax
With optimization:
Main.pas.279: i := Length(S);
0042F9D3 8B1548864300 mov edx,[$00438648]
0042F9D9 8BC2 mov eax,edx
0042F9DB 85C0 test eax,eax
0042F9DD 7405 jz $0042f9e4
0042F9DF 83E804 sub eax,$04
0042F9E2 8B00 mov eax,[eax]