每个asm指令的大小是多少?每条指令占用多少字节?8个字节?四个用于操作码,四个用于参数?例如,当你在mov中有一个操作码和2个参数时会发生什么?它们在内存中是否具有固定大小或它们是否有所不同?EIP是否与此有关,它的值总是加1,完全独立于它所经过的指令类型?
我问这个当我正在阅读http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames时,我偶然发现,看起来调用指令相当于push和jmp指令.
call MYFUNCTION
mov my_var, eax
Run Code Online (Sandbox Code Playgroud)
和...一样
push [eip + 2];
jmp MYFUNCTION;
mov my_var, eax
Run Code Online (Sandbox Code Playgroud)
当我们在堆栈上推动[eip + 2]时,我们指向的值是什么?到"jmp MYFUNCTION"旁边的行,移动my_var eax,对吧?
ps:MSVC++在第一行标记错误,因为它表示eip未定义.它适用于eax,esp,ebp等.我做错了什么?