我正在学习不带宏的do结构(纯汇编)。
想象一下功能和结构
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和no.2放在一起,怎么知道"asm“特别是引用我的结构?变量由ebp+nº字节引用
发布于 2015-01-26 08:14:29
在程序集中,不要求结构后面有NULL。
esp总是指向你刚刚在堆栈上压入的内容,正如你正确地假设堆栈在内存中向下增长。
但是,您不能使用push设置任意结构,就像您在这里尝试的那样。
堆栈条目有一定的固定宽度(通常是16、32或64位),这取决于CPU的运行模式,因此,只有当结构中的所有元素恰好都有一个宽度,这是堆栈条目的宽度的倍数时,您的方法才有效。
https://stackoverflow.com/questions/28142865
复制相似问题