我正在学习集会。
我知道gcc支持& t语法,但我希望我的程序在intel处理器上运行。
因此无论语法如何,它都适用于英特尔处理器,或者必须使用英特尔语法才能在英特尔平台上运行!我很困惑??
感谢。
答案 0 :(得分:0)
att vs intel语法已被多次覆盖,在这里和其他地方。
汇编语言是汇编程序定义的语言,汇编程序是用于将ASCII汇编语言转换为您感兴趣的特定目标的机器代码的特定程序。与C或C ++编译器不同,其中有一个标准定义了对于同一目标处理器,您可以拥有7个汇编程序,并且没有理由认为汇编语言必须以任何形式或形式兼容。机器代码是重要的产品,如果机器代码与同一目标匹配,那么无论出于何种原因,最好使用您最喜欢的工具。
对于这种情况,有英特尔文档定义的英特尔格式,并由英特尔汇编程序支持。然后由其他汇编程序支持sorta。指令很接近或相同,他们可能有兼容模式,也许他们有自己的指令。例如as86(或asm86或a86?)tasm,masm和当前的nasm。然后你有这个AT& T语法,某个地方某人(ATT?)决定使用一种愚蠢的汇编语言编写一个汇编程序,这种语言根本不符合英特尔文档。这成了英特尔与AT& T语法的结果。 gnu汇编程序也因为搞乱现有的汇编语言而闻名,他们显然使用了AT& T并引入了自己的细微差别。他们可能会有一个你应该检查的英特尔语法切换。
你应该问的问题是目标,像x86的gnu汇编程序这样的汇编程序通常能够为各种版本的x86生成代码,所以你需要确保它与你的计算机匹配(如果你不添加它,很可能会这样做)任何目标类型/特定选项)。
没有理由假设AT& T语法汇编程序(gnu汇编程序(gas或as))不起作用。