我正在修改putchar
,push
和pop
。
当我尝试推送rcx
的值时,使用它执行某些操作,调用putchar
并将其弹回到rcx,我发现rcx
中的值已更改为0。
就像在第一段代码中一样。
为了进行比较,我制作了第二段代码,我推了rcx
,用putchar
做了一些事情并将其弹回rcx
,{{1}仍然是它所推动的价值。
rcx
mov rcx, 123
push rcx
inc rcx
call [putchar]
pop rcx
call [putchar]
mov rcx, 123
push rcx
inc rcx
pop r12
call [putchar]
mov rcx, r12
call [putchar]
是否真的清除了堆栈?
有谁知道如何保护堆栈(或至少它的重要部分)?