386对寄存器的使用已经非常通用了
当时的调用约定你要放在当时的情况下去理解它的合理性
不过现在研究这个已经完全没有意义了
你有时间不如研究研究现在的调用约定,看看还有什么提高的地方
比如说apx马上就出来了,x86也能有32个通用寄存器了,sys v abi对这16个新寄存器只能用作callee saved register,其他没有任何改变。我觉得肯定有更好的分配方法。
【 在 hgoldfish 的大作中提到: 】
: i386 的一些调用约定 (c, borland register, stdcall) 有要求函数保存 EAX, ECX, EDX. 其它的 EBX, ESI, EDI, EBP, ESP 这几个,如果被调用者要用到的话,需要自行保存。
: 个人感觉 borland register 的调用约定是比较合理的。其它的调用约定简直是丧心病狂也不知是怎么想出来的。既要求调用者保存 EAX, ECX, EDX 又不拿来传参数。这不是浪费宝贵的字节么。
: 8086 的话,也是 turbo c 比较合理,使用了 AX, DX, BX 进行传参。
: ...................
--
FROM 73.202.29.*