- 主题:DOS 写汇编最烦的地方是调函数保存寄存器吧
每调一个函数都需要把自己使用到的寄存器保存到栈上,再调用函数。等函数返回后,还得把寄存器一个个从栈上弹出来。
这个开销挺大的,所以听说以前有个技巧是写超大的 main() 函数. 以减少函数的调用开销?
--
FROM 59.61.197.*
定义自己的calling convention
用寄存器传餐
【 在 hgoldfish 的大作中提到: 】
: 每调一个函数都需要把自己使用到的寄存器保存到栈上,再调用函数。等函数返回后,还得把寄存器一个个从栈上弹出来。
: 这个开销挺大的,所以听说以前有个技巧是写超大的 main() 函数. 以减少函数的调用开销?
--
FROM 73.170.212.*
所以当年的程序员写程序一定很累啊。
现在的程序员,应该都不会考虑啥函数调用开销这些破事了哈。
【 在 BigCarrot 的大作中提到: 】
: 定义自己的calling convention
: 用寄存器传餐
--
FROM 59.61.197.*
专业汇编程序员或团队,多数有自己的abi,
一般用宏。
也有些小型程序或局部,按类似于inline的方式使用寄存器,没有压栈岀栈动作,用于跑性能。
【 在 hgoldfish 的大作中提到: 】
:
: 每调一个函数都需要把自己使用到的寄存器保存到栈上,再调用函数。等函数返回后,还得把寄存器一个个从栈上弹出来。
:
: 这个开销挺大的,所以听说以前有个技巧是写超大的 main() 函数. 以减少函数的调用开销?
:
#发自zSMTH@如有雷同 纯属巧合
--
FROM 123.122.162.*
【 在 hgoldfish 的大作中提到: 】
: 所以当年的程序员写程序一定很累啊。
: 现在的程序员,应该都不会考虑啥函数调用开销这些破事了哈。
你当inline是摆设啊
--
FROM 73.170.212.*
【 在 hgoldfish 的大作中提到: 】
: 所以当年的程序员写程序一定很累啊。
: 现在的程序员,应该都不会考虑啥函数调用开销这些破事了哈。
:
显然啊, 进栈出栈, 不匹配了, 返回就死机了,
尤其是那个没有32位保护模式的时代, 死机, 就得重启机器。
--
FROM 115.171.154.*
如果用 inline,那程序容量就上来了。
【 在 BigCarrot 的大作中提到: 】
: 你当inline是摆设啊
--
FROM 47.243.39.*
我看过atof的16位代码实现,每个寄存器都琢磨其用处用法。设计得很精致。
【 在 newre 的大作中提到: 】
: 专业汇编程序员或团队,多数有自己的abi,
: 一般用宏。
: 也有些小型程序或局部,按类似于inline的方式使用寄存器,没有压栈岀栈动作,用于跑性能。
: ...................
--
FROM 219.137.51.*
和现代编译器的寄存器分配算法有啥区别吗?
【 在 blackoil 的大作中提到: 】
: 我看过atof的16位代码实现,每个寄存器都琢磨其用处用法。设计得很精致。
--
FROM 106.122.208.*
手工制作,跟工厂量产的区别。
【 在 hgoldfish 的大作中提到: 】
: 和现代编译器的寄存器分配算法有啥区别吗?
:
--
FROM 219.137.51.*