0

我正在修改putchar,pushpop。当我尝试推送 的值rcx,对其进行操作,调用putchar并将其弹出回 rcx 时,我发现 in 的值rcx已更改为 0。就像在第一段代码中一样。

为了比较,我编写了第二段代码,在我 push 的地方rcx,用它做一些不是的事情,然后将它putchar弹回rcxrcx仍然是它被推送的值。

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]

putchar真的清除堆栈吗?有谁知道如何保护堆栈(或至少是其中的重要部分)不受此影响?

4

0 回答 0