函数调用参数和寄存器

来源:互联网 发布:java 数据一致性 编辑:程序博客网 时间:2024/05/25 21:33

1) MIPS

函数参数从左到右依次传递给 $a0~$a3.

(gdb) where#0  Calculator::Multiply (this=0x411008, a=12, b=10) at testclass.cpp:29#1  0x004009b4 in main (argc=1, argv=0x7fff6e44) at testclass.cpp:37(gdb) p /x $a0$3 = 0x411008(gdb) p /x $a1$4 = 0xc(gdb) p /x $a2$5 = 0xa(gdb) p *(Calculator*)$a0$6 = {<IObject> = {_vptr.IObject = 0x400c28 <vtable for Calculator+8>},   a = 0, b = 0}

2)ARM: 函数参数也是从左到右传递给 寄存器 $r0到 $r3.

(gdb) where#0  Calculator::Multiply (this=0x11008, a=a@entry=12, b=b@entry=10)    at testclass.cpp:26#1  0x00008530 in main (argc=<optimized out>, argv=<optimized out>)    at testclass.cpp:37(gdb) p /x $r0    $4 = 0x11008(gdb) p /x $r1    $5 = 0xc(gdb) p /x $r2    $6 = 0xa(gdb) p *(Calculator *)$r0$7 = {<IObject> = {_vptr.IObject = 0x8760 <vtable for Calculator+8>}, a = 0,   b = 0}


0 0
原创粉丝点击