SPARC和HP-UX中的Leaf函数
我刚刚阅读了一篇Phrack文章,该文章在HP-UX中进行了反汇编。我读到在HP-UX和SPARC下有两类功能可以使用;叶和非叶功能。以下是我从这里开始拆卸的一部分。
(gdb) disass leaf
Dump of assembler code for function foo:
0x3280 <leaf>: copy r3,r1
0x3284 <leaf+4>: copy sp,r3
0x3288 <leaf+8>: stw,ma r1,40(sr0,sp)
0x328c <leaf+12>: stw r26,-24(sr0,r3)
0x3290 <leaf+16>: stw r0,8(sr0,r3)
0x3294 <leaf+20>: ldi 1,r19
0x3298 <leaf+24>: stw r19,8(sr0,r3)
0x329c <leaf+28>: ldo 40(r3),sp
0x32a0 <leaf+32>: ldw,mb -40(sr0,sp),r3
0x32a4 <leaf+36>: bv,n r0(rp)
End of assembler dump.
(gdb)
通常在调用函数时,将返回地址压入堆栈,以便程序在函数执行完毕后知道将控件返回到何处。在这些叶子函数的情况下,它是如何工作的?
我没有任何HP-UX / SPARC机器的访问权限,所以无法自己尝试这个(我也不太了解这种情况下的程序集,因为同样的原因)。
有人可以解释在这种情况下控制如何返回到被调用函数?
没有找到相关结果
已邀请:
1 个回复
烫珊