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}