推進結構類型的內容壓入堆棧可以說,我已經聲明瞭一個結構,像這樣:在86
struct VEC
x dd ?
y dd ?
ends
然後我聲明瞭一些數據結構:
section '.data' data readable writeable
vec1 VEC 5,4
vec2 VEC 3,2
現在,我想將內存位置vec1和vec2的內容推送到堆棧。我這樣做:
push sizeof.VEC [vec1]
push sizeof.VEC [vec2]
這不會編譯。返回的錯誤是:
error: operand size not specified.
我想知道是否有什麼辦法可以把這種結構類型的內容壓入堆棧。或者這在x86中是非法的呢?
我使用平板彙編版本1.71.49
一般來說在Windows 10編譯此,我的問題是關於如何讓彙編器進行編碼推[存儲]用正確的操作數大小
'sizeof.VEC'是一個數字表達式。 '8 [vec1]'是否意味着FASM中的[vec1 + 8]?如果是這樣,那就是你會得到的(如果你在其他操作數大小被暗示的上下文中使用它,或者使用'qword'或'qword ptr'。無論如何,這只是一個如何獲得你的彙編程序用正確的操作數大小對一個'push [mem]'進行編碼(16位和64位的壓入可以在64位模式下進行編碼,但不是32位的壓入)'REX.W = 0推動某些錯誤爲非法指令,相反英特爾的insn ref手冊聲稱操作數大小可能會被'66H'或'REX.W'覆蓋 –
一般來說,就像你指出的那樣,我的問題是關於如何讓彙編器編碼push [mem]正確的操作數大小 – user1720897
這是對*的迴應或者這在x86中是非法的?*這很簡單:如果你的結構是16或64b,那麼是的,否則不行! –