程序中的顺序

问题描述 投票:1回答:1

汇编程序应按什么顺序进入源文件:从内到外还是相反?主代码(不在proc中)应该放在哪里:文件的开头或结尾附近?是否有客观标准可供选择,而不仅仅是公约?

assembly conventions
1个回答
0
投票

没有约定;通常会将相关功能放在源代码中彼此靠近。

或者为了性能起见,将“热”功能分组在一起,使其位于同一iTLB页面中,甚至对于小功能,或者在一个结束处,下一个开始处的边界处,甚至是相同的L1指令高速缓存行。例如将相互调用或经常彼此调用的函数归为一组。

如果要使源顺序不同于二进制顺序,则可以将“冷”函数(在启动或关闭时调用一次)放在诸如.text.startup的区域中,而不是通常的.text区域; GCC为此,例如使用main而不是通常的.text指令

.section        .text.startup,"ax",@progbits
.globl main
main:
  ...
.text            # shorthand for .section .text
other_function:

(["ax",@progbits对于ELF目标意味着执行权限,并且该部分应该映射到进程内存中,而不是直接放在磁盘上的可执行文件中,而不会被程序加载器映射。或更具体地说,链接到ELF < [segment(具有这些属性)。

如果有兴趣,请尝试on Godbolt
© www.soinside.com 2019 - 2024. All rights reserved.