函数调用参数和寄存器

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}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值