不同种类的组装?

时间:2013-07-16 07:10:24

标签: assembly

此类代码有何不同之处:

    .text
    .globl main
    .type  main, @function
main:
    movl $0, %eax
    movl $0, (%esp)
    call exit

和此类型的代码:

    section .text
    global _start
_start:
    mov  edx, eax

哪种更传统,更适合优化?

3 个答案:

答案 0 :(得分:3)

第一个是AT& T组装风格,第二个是英特尔组装风格。没有太大的区别。例如,GCC通常以AT& T风格生成组件(参见GNU Assembler GAS),而微软和英特尔编译器将生成英特尔组装风格(参见MASM,NASM)输出。

我更喜欢英特尔风格,因为它看起来对我来说更清晰,但我认为这是个人品味的问题。

有一个关于两种风格差异的文件可能会有所帮助。

http://simon.baymoo.org/universe/tools/symset/symset.txt

答案 1 :(得分:2)

然后首先称为AT& T风格的集会并且是令人厌恶的。

第二种是英特尔风格,英特尔在其x86指令集文档中使用它。

答案 2 :(得分:0)

第一个是用GAS的AT& T语法编写的。第二种是用英特尔语法编写的,似乎适用于NASM。

我认为英特尔语法更为传统,因为它们是x86处理器的设计者。虽然您仍然使用AT& T语法。没有比其他更适合优化。

相关问题