每个汇编指令的大小是多少?每个指令需要多少字节?8个字节吗?4个字节用于操作码,4个字节用于参数?例如,在mov中有一个操作码和2个参数时会发生什么?它们在内存中是否具有固定大小或者它们是可变的?EIP是否与此有关,如果它的值始终增加1,完全独立于它所传递的指令类型?
我之所以问这个问题是因为当我阅读http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames时,我偶然发现调用指令相当于推送(push)和跳转(jmp)指令。
我之所以问这个问题是因为当我阅读http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames时,我偶然发现调用指令相当于推送(push)和跳转(jmp)指令。
call MYFUNCTION
mov my_var, eax
与...相同
push [eip + 2];
jmp MYFUNCTION;
mov my_var, eax
当我们将[eip + 2]推送到栈上时,我们指向的值是什么?是紧挨着"jmp MYFUNCTION"的那一行,mov my_var eax, right吗?
ps:MSVC++在第一行上标记错误,因为它说eip未定义。对于eax、esp、ebp等,它可以正常工作。我做错了什么?