我正在編寫一個windows 32位程序,該程序在行內彙編中有一些部分。該程序旨在運行在32位和64位系統。我正在編譯這兩個系統的32位版本。32位Windows嵌入式程序中的堆棧寬度
我的問題是,我假設堆棧寬度是4個字節寬。當我的32位程序在64位Windows系統下運行時,堆棧寬度仍然是4字節寬?
在我的計劃,我(這是簡化版本)我推棧中的某個值:
for (i=0;i<4;i++)
{
_asm
{
mov ebx,i ; push 0,1,2,3 on the stack
push ebx
}
}
後來我回用這樣的代碼quering值:
ii=0;
for (i=0;i<5;i++)
{
_asm
{
mov ebx,ii ; ii has 0, then 4, then 8 ...
mov eax,dword ptr [esp+ebx] ; peek values on the stack from the top
mov num1,eax
}
ii+=4; // here I am assuming stack width is 4 bytes
// -- do something with num1 --//
}
請定義「堆棧寬度」。 –