@
hilojack 如果是用GNU的as的话不是可以加参数来改语法的吗? 我刚刚看了下:
[yudi@MBP112 ~]$as --help | grep -i intel
-mmnemonic=[att|intel] use AT&T/Intel mnemonic
-msyntax=[att|intel] use AT&T/Intel syntax
不过的确有很多Linux代码, 特别是那些内联的, 用的是AT&T语法.
不过我一般都是用NASM/YASM写x86汇编, 这个语法我比较喜欢.
我一般都是用汇编干脏活, 给C调用. 按照ABI的规则, 然后global导出符号, 然后汇编成ELF的目标文件.o; C那边写个对应的头文件, 然后直接链接就好了.
好像这个方法目前是主流, 我看到像ffmpeg等工程所有的汇编代码都是用YASM汇编的 (应该也有直接用GNU的, 不过应该只在内联时用下).
===========================
要是直接用汇编在操作系统下写程序, 那你得遵守操作系统的系统调用规则. 每个操作系统的接口都不一样, windows下要调用msvcrt帮你弄 (或者更直接点调用api, 应该也是软trap的, 保护模式下系统调用需要提权), linux下应该也是直接用int来软trap... mac下我不知道, 不过应该也差不多哦, 参考他们的文档.
学x86汇编还算建议弄个带调试功能的模拟器, 直接写裸机程序跑, 那样比较不错. 比如bochs, qemu这种.