usar mundo hola ensamblador ejecutar compilar como assembler linux ubuntu x86 assembly

mundo - Compilar/ejecutar ensamblador en Linux?



hola mundo en ensamblador emu8086 (7)

Soy bastante nuevo en Linux (Ubuntu 10.04) y un principiante total para el ensamblador. Estaba siguiendo algunos tutoriales y no pude encontrar nada específico para Linux. Entonces, mi pregunta es, ¿qué es un buen paquete para compilar / ejecutar ensamblador y cuáles son los comandos de línea de comando para compilar / ejecutar para ese paquete?



El ensamblador (GNU) es como (1)


El ensamblador GNU (gas) y NASM son buenas opciones. Sin embargo, tienen algunas diferencias, la más importante es la orden en que pones las operaciones y sus operandos.

el gas usa la sintaxis de AT & T:

mnemonic source, destination

nasm usa el estilo intel:

mnemonic destination, source

Cualquiera de los dos probablemente haga lo que necesites.

Pruebe este tutorial: http://asm.sourceforge.net/intro/Assembly-Intro.html


El ensamblador GNU probablemente ya esté instalado en su sistema. Prueba man as para ver la información de uso completa. Puede utilizar as para compilar archivos individuales y ld para vincular si realmente desea hacerlo.

Sin embargo, GCC es un gran front-end. Puede armar archivos .s por ti. Por ejemplo:

$ cat >hello.s <<EOF .data .globl hello hello: .string "Hello, world!" .text .global main main: pushq %rbp movq %rsp, %rbp movq $hello, %rdi call puts movq $0, %rax leave ret EOF $ gcc hello.s -o hello $ ./hello Hello, world!

El código anterior es AMD64. Sería diferente si todavía está en una máquina de 32 bits.

También puede compilar código C / C ++ directamente para ensamblar si tiene curiosidad sobre cómo funciona algo:

$ cat >hello.c <<EOF #include <stdio.h> int main(void) { printf("Hello, world!/n"); return 0; } EOF $ gcc -S hello.c -o hello.s



Si está usando NASM, la línea de comandos es solo

nasm file.asm -o outfile

donde ''file.asm'' es su archivo de ensamblaje (código) y ''archivo de salida'' es el ejecutable que desea.

Aquí hay más información:

http://www.nasm.us/doc/nasmdoc2.html#section-2.1

Puede instalar NASM en Ubuntu con el siguiente comando:

apt-get install nasm

Aquí hay un conjunto básico de Hello World in Linux para abrirle el apetito:

http://web.archive.org/web/20120822144129/http://www.cin.ufpe.br/~if817/arquivos/asmtut/index.html

Espero que esto sea lo que estabas preguntando ...


También hay FASM para Linux.

format ELF executable segment readable executable start: mov eax, 4 mov ebx, 1 mov ecx, hello_msg mov edx, hello_size int 80h mov eax, 1 mov ebx, 0 int 80h segment readable writeable hello_msg db "Hello World!",10,0 hello_size = $-hello_msg

Comils con

fasm hello.asm hello