【发布时间】:2020-07-07 02:23:45
【问题描述】:
我已经写了一些测试代码,just for testing the stack overflow。
int MyFunc(long c)
{
char buffer[12];
return sprintf(buffer, "xxxxxxxxxxx%ld", c);
}
当我将它编译为 ARM64 程序集时,我得到了结果
MyFunc(long): // @MyFunc(long)
sub sp, sp, #32 // =32
stp x29, x30, [sp, #16] // 16-byte Folded Spill
add x29, sp, #16 // =16
adrp x1, .L.str
mov x2, x0
add x1, x1, :lo12:.L.str
add x0, sp, #4 // =4
bl sprintf
ldp x29, x30, [sp, #16] // 16-byte Folded Reload
add sp, sp, #32 // =32
ret
那么,16-byte Folded Spill 是什么意思?为什么?
【问题讨论】:
标签: arm64