#include <stdio.h> int main(void) { int nums[10]; nums[2] = 15; printf("%d\n", nums[2]); return 0; }
|main| PROC |$LN3| stp fp,lr,[sp,#-0x10]! mov fp,sp bl __security_push_cookie sub sp,sp,#0x20 mov x8,#4 mov x9,#2 mul x9,x8,x9 mov x8,sp add x9,x8,x9 mov w8,#0xF str w8,[x9] mov x8,#4 mov x9,#2 mul x9,x8,x9 mov x8,sp add x8,x8,x9 ldr w1,[x8] adrp x8,|$SG4981| add x0,x8,|$SG4981| bl printf mov w0,#0 add sp,sp,#0x20 bl __security_pop_cookie ldp fp,lr,[sp],#0x10 ret ENDP ; |main|
値を変えながらassembleしてみると、mov x8,#4のところはnum[2], [10], num[15]でも変わらないのね。mul x9, x8、x9の挙動がいまいちわからんが