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?
3 sintaxis (nasm, tasm, gas) en 1 ensamblador, yasm.
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
Mi sugerencia sería obtener el libro Programación desde cero:
http://nongnu.askapache.com/pgubook/ProgrammingGroundUp-1-0-booksize.pdf
Ese es un muy buen punto de partida para ingresar a la programación de ensamblador bajo Linux y explica muchos de los principios básicos que necesita comprender para comenzar.
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