asm中的结构

时间:2015-01-25 23:33:43

标签: assembly

我正在研究没有宏的结构(纯组装)。

想象一下功能和结构

foo(struct house* ip)
    house{
    short a;
    short b;
    int c;
    }

汇编程序:

push 0   ; c = 0
pushw 11 ; b = 11
pushw 0  ; a = 0

mov ecx, esp ; pointer to the structure
execute->foo(ecx)

两个问题: 1.结构后asm中的结构必须为NULL?我已经看到一些代码放置null而其他代码没有。 2.怎么知道“asm”esp引用我的结构?变量由ebp +nº字节

引用

1 个答案:

答案 0 :(得分:0)

在汇编中没有要求结构在它们之后具有NULL。

esp始终指向您刚刚在堆栈上推送的内容,并且正确地假设堆栈在内存中向下增长。

但是,您无法使用推送设置任意结构,就像您在这里尝试一样。

堆栈条目具有一定的固定宽度(通常为16,32或64位),具体取决于CPU运行的模式,因此只有在结构中的所有元素都具有宽度时,您的方法才有效,这是堆栈条目的倍数。