我了解到您不能将字节直接推送到英特尔奔腾的堆栈中,有人可以向我解释一下吗?
我得到的原因是因为 esp 寄存器是字可寻址的(或者,这是我们模型中的假设)并且它必须是“偶数地址”。我会假设递减一些 32 位二进制数的值不会弄乱寄存器的对齐方式,但显然我还不够了解。
我已经尝试了一些 NASM 测试并提出如果我声明一个变量(bite db 123)并将其推送到堆栈中,esp 会减少 4(表明它推送了 32 位?)。但是,“push byte bit”(对不起,我选择了变量名)会导致一个错误:
test.asm:10:错误:不支持的非 32 位 ELF 重定位
在这个困难时期,任何智慧之言都将不胜感激。我是一年级本科生,很抱歉我在这方面的天真。