C++ 这是什么风格的组件(英特尔、att…等等?),我如何生产它?

C++ 这是什么风格的组件(英特尔、att…等等?),我如何生产它?,c++,c,gcc,compiler-construction,C++,C,Gcc,Compiler Construction,我正试图生成这样的汇编代码(以便它与nasm一起工作) 首先,这是什么汇编风格;其次,如何使用类似于gcc-S code.C-o code.S-masm=intel的命令从C文件生成它?这是英特尔风格 您在问题中编写的命令行有什么问题?-masm=intel正是产生这种风格的原因(intel语法,而不是默认的AT&T语法)。但这只适用于实际指令。像[SECTION]这样的东西是特定于NASM的,GCC总是生成特定于GAS的。那么,当我使用(-masm=intel)运行上面的命令,然后尝试运行命令

我正试图生成这样的汇编代码(以便它与nasm一起工作)

首先,这是什么汇编风格;其次,如何使用类似于
gcc-S code.C-o code.S-masm=intel的命令从C文件生成它?这是英特尔风格


您在问题中编写的命令行有什么问题?

-masm=intel
正是产生这种风格的原因(intel语法,而不是默认的AT&T语法)。但这只适用于实际指令。像
[SECTION]
这样的东西是特定于NASM的,GCC总是生成特定于GAS的。那么,当我使用(-masm=intel)运行上面的命令,然后尝试运行命令
NASM-f elf code.S
时,我会得到一大堆错误?因为NASM不是GAS。指令是错误的。@HansPassant你能再解释一下你的意思吗?@Nosrettap-风格的一部分是它看起来像手写的汇编。这可能是问题的一部分吗?只是如果我使用这个命令,然后我尝试使用命令
nasm-f elf code.s
,我会得到一大堆错误
;hello.asm
[SECTION .text]

global _start


_start:

    jmp short ender

    starter:

    xor eax, eax    ;clean up the registers
    xor ebx, ebx
    xor edx, edx
    xor ecx, ecx

    mov al, 4       ;syscall write
    mov bl, 1       ;stdout is 1
    pop ecx         ;get the address of the string from the stack
    mov dl, 5       ;length of the string
    int 0x80

    xor eax, eax
    mov al, 1       ;exit the shellcode
    xor ebx,ebx
    int 0x80

    ender:
    call starter    ;put the address of the string on the stack
    db 'hello'