#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("%d.%d\n",1,2);
return EXIT_SUCCESS;
}
компилировать и дизассемблировать:
0000842c <main>:
842c: e92d4008 push {r3, lr}
8430: e3a01001 mov r1, #1
8434: e3a02002 mov r2, #2
8438: e59f0008 ldr r0, [pc, #8] ; 8448 <main+0x1c>
843c: ebffffcc bl 8374 <_init+0x44>
8440: e3a00000 mov r0, #0
8444: e8bd8008 pop {r3, pc}
8448: 00008524 andeq r8, r0, r4, lsr #10
r0 - первый параметр, строка формата, r1 - второй параметр a 1, r2 - третий параметр 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+0x11c>
...
81ec: 00060120 andeq r0, r6, r0, lsr #2
Если вы посмотрите на вашу разборку для адреса 0x60120, вы увидите свою строку.