c++tricks4i386平台c函数调边界的栈分配.pdfVIP

  • 2
  • 0
  • 约1.9千字
  • 约 5页
  • 2018-06-07 发布于天津
  • 举报

c++tricks4i386平台c函数调边界的栈分配.pdf

ctricks4i386平台c函数调边界的栈分配

C++Tricks2.4I386 平台C函数调⽤边界 的栈分配 从fars rfc.wordpr 导⼊ 2.4I386平台C函数调⽤边 界的栈分配 当调⽤⼀个函数时,主调函数将参数以声明中相反 的顺序压栈,然后将当前的代码执⾏指针( ip)压栈,然 后跳转到被调函数的⼊⼝点。在被调函数中,通过将 bp 加上⼀个偏移量来访问函数参数,以声明中的顺序(即压 栈的相反顺序)来确定参数偏移量。被调函数返回时,弹 出主调函数压在栈中的代码执⾏指针,跳回主调函数。 再由主调函数恢复到调⽤前的栈。 函数的返回值不同于函数参数,通过寄存器传递。 如果返回值类型可以放⼊32位变量,⽐如int、short、 char、指针等类型,通过 ax寄存器传递。如果返回值类 型是64位变量,如_int64,同过 dx+ ax传递, dx存储 ⾼32位, ax存储低32位。如果返回值是浮点类型,如 float和doubl ,通过专⽤的浮点数寄存器栈的栈顶返 回。如果返回值类型是⽤户⾃定义结构,或C++类类型, 通过修改函数签名,以引⽤型参数的形式传回。 同样以最简单的函数为例 : voidf(){ inti=g(1,2); }

文档评论(0)

1亿VIP精品文档

相关文档