有各种开源汇编程序,例如gas、nasm和yasm。它们有不同pseudo-ops的macro语法。对于许多开源项目,汇编程序经过预处理以替换常量和平台条件。  
gcc假设您可以使用所有当前的attributes和,创建汇编程序会有什么限制#pragmas,不包括翻译性能(编译/汇编到二进制时间)?  
我不是在谈论inline-assembly。
 #define MOV(RA,RB)  (OXFEB10000UL | RA << 16 | RB)  
 #define ADD(RA,RB)  (OXFEB20000UL | RA << 16 | RB)  
 #define RET         (OXFEB7ABCDUL)  
 unsigned long add4[] __attribute(section(".text")) =
 {
    ADD(R0,R1),
    ADD(R2,R3),
    MOV(R1,R2),
    ADD(R0,R1),
    RET()
 };
我相信使用指针算术可以允许模拟.和其他labels. 也许这是一个XY 问题;我试图理解为什么有这么多汇编程序。似乎一切都可以由预处理器完成,而汇编器确实是程序员的偏好;或者我缺少技术限制。
我想这可能与“你可以用汇编程序做的事情,而你不能用shell 代码做的事情”有关。
编辑:我已将其从C重新标记为compiler。我对汇编程序的技术细节感兴趣。它是简单的1-1翻译和发射重定位(如编译器那样)还是还有更多?正如我上面所概述的那样,我并不是要人们编写汇编程序。我试图了解汇编程序在做什么。我不相信装配工有一本龙书。当然,预处理器不能自己创建a binary,需要额外的机器;它只翻译文本。