我已經瞭解到,您無法直接將字節推入英特爾奔騰的堆棧,有誰能向我解釋這一點嗎?爲什麼在Pentium IA-32上無法將字節壓入堆棧?
我給出的理由是因爲esp寄存器是可以字尋址的(或者,這是我們模型中的假設)並且它必須是「偶數地址」。我會假設遞減一些32位二進制數的值不會混淆寄存器的對齊,但顯然我不太瞭解。
我已經嘗試了一些NASM測試,並提出如果我聲明一個變量(咬數據庫123)並將其推到堆棧上,esp遞減4(表示它推送32位?)。但是,「推字節咬」(對不起,我選擇的變量名)將導致一個錯誤的類型:
TEST.ASM:10:錯誤:不支持非32位ELF搬遷
任何的話在這個困難時期,智慧將會受到極大的讚賞。我是大學一年級的學生,因此對於我的天真而感到抱歉。
非常豐富,但不幸的是,仍然超出了我現在掌握的知識。 – 2010-04-06 17:09:07
@Tim - 可以理解。也許還是值得快速閱讀的。 – 2010-04-06 17:12:16
等等,等等。每個內存位置都是32位寬,所以如果你推入一個值,它會將堆棧減少4個字節,因爲4 * 8是32位,如果它減少了2,那麼它會嘗試並使一個未對齊閱讀,內爆宇宙? 是嗎?如果是這樣,你可以得到的觀點,PDF是真棒(第二個)。 – 2010-04-06 17:20:23