源码:
void bar(int j, int k); // a function to call
void demo_stackframe(int a, int b, int c) {
int x;
char buffer[64];
int y;
int z;
// body of function not terribly relevant other than
bar(z, y);
}
格式: CALL OPRD
功能: 过程调用指令
1. 其中OPRD为过程的目的地址.
2. 过程调用可分为段内调用和段间调用两种.寻址方式也
可以分为直接寻址和间接寻址两种.
3. 本指令不影响标志位.
近调用 - 调用当前代码段(CS 寄存器当前指向的段)中的过程,有时称为段内调用。
执行近调用时,处理器将 EIP 寄存器的值(包含 CALL 指令后面的指令的偏移量)压入堆栈(稍后用作
返回指令指针)。然后,处理器分支到当前代码段中由目标操作数指定的地址。目标操作数指定代码段中的绝对偏移量
(即相对于代码段基址的偏移量)或相对偏移量(相对于 EIP 寄存器中指令指针的当前值的有符号位移量,此指针指向
CALL 指令后面的指令)。执行近调用时,CS 寄存器保持不变。
对于近调用,绝对偏移量在通用寄存器或内存位置(r