#include
#include
int main(void) {
printf("%d.%d\n",1,2);
return EXIT_SUCCESS;
}
编译和拆机:
0000842c :
842c: e92d4008 push {r3, lr}
8430: e3a01001 mov r1, #1
8434: e3a02002 mov r2, #2
8438: e59f0008 ldr r0, [pc, #8] ; 8448
843c: ebffffcc bl 8374 <_init>
8440: e3a00000 mov r0, #0
8444: e8bd8008 pop {r3, pc}
8448: 00008524 andeq r8, r0, r4, lsr #10
r0是第一参数,格式字符串,R 1是所述第二参数A 1,R 2,第三参数A 2.格式字符串是一个字符串,一个指向字节数组的指针。 r0加载该指针,即一个字节字符串的地址。在这种情况下,该地址是0x8524。
,如果你很好奇,你可以去看看0x8524,看看你的字符串,
8524: 252e6425 strcs r6, [lr, #-1061]! ; 0xfffffbdb
8528: 00000a64 andeq r0, r0, r4, ror #20
0x25,0x64,0x2E之间,0x25,0x64,的0x0A,为0x00
同样,在你的拆装地址你的字符串是
81d0: e59f0014 ldr r0, [pc, #20] ; 81ec <.text>
...
81ec: 00060120 andeq r0, r6, r0, lsr #2
如果你看看你的反汇编地址0x60120你会看到你的字符串。