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 comandos para compilar/ejecutar para ese paquete?¿Compila/ejecuta el ensamblador en Linux?
Respuesta
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.
de gas utiliza la sintaxis AT & T:
mnemonic source, destination
nasm utiliza estilo de Intel:
mnemonic destination, source
Cualquiera de los dos probablemente hará lo que usted necesita.
Prueba este tutorial: http://asm.sourceforge.net/intro/Assembly-Intro.html
Gracias, ese tutorial es excelente ya que es específico de Linux. Además, el tutorial tenía instrucciones muy específicas sobre cómo compilar y ejecutar progrs de ensamblador en linux –
gas ha soportado ".intel_syntax" por un tiempo - Yo personalmente todavía uso fasm, yasm o nasm. – snemarch
El ensamblador (GNU) es como (1)
Si está usando NASM, la línea de comandos es sólo
nasm file.asm -o outfile
donde 'file.asm' es el archivo de ensamblaje (código) y 'archivo_salida' es el ejecutable que quieres
Aquí hay alguna información más:
http://www.nasm.us/doc/nasmdoc2.html#section-2.1
Puede instalar NASM en Ubuntu con el siguiente comando:
apt-get install nasm
Aquí es un Hola Mundo en Linux montaje básico para abrir el apetito :
http://web.archive.org/web/20120822144129/http://www.cin.ufpe.br/~if817/arquivos/asmtut/index.html
Espero que esto sea lo que estaba preguntando ...
Hello World ejemplo es un enlace roto! –
http://www.tldp.org/HOWTO/Assembly-HOWTO/hello.html#AEN867 – imbellish
El ensamblador GNU probablemente ya esté instalado en su sistema. Pruebe man as
para ver la información de uso completa. Puede usar 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 el código C/C++ directamente en el montaje, si usted es curioso 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
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
Se comillas con
fasm hello.asm hello
Mi sugerencia sería la de obtener la Programación libro desde cero:
http://nongnu.askapache.com/pgubook/ProgrammingGroundUp-1-0-booksize.pdf
Eso es un muy buen punto de partida para entrar en ensamblador programación bajo Linux y explica muchos de los principios básicos que necesita comprender para comenzar.
3 sintaxis (nasm, tasm, gas) en 1 ensamblador, yasm.
- 1. ¿Hay ensamblador REPL bajo Linux?
- 2. Linux de 64 bits, Lenguaje ensamblador, ¿Problemas?
- 3. Error del ensamblador de Linux "restricción imposible en 'asm'"
- 4. Linux system call table o cheetsheet en lenguaje ensamblador
- 5. Conversión de un ensamblador en línea GCC para Delphi ensamblador
- 6. Cómo usar C define en el ensamblador ARM
- 7. Conversor de ensamblador de Microsoft a ensamblador GNU
- 8. ¿Vale la pena aprender el lenguaje ensamblador?
- 9. ¿Cómo desconectar el ensamblador integrado de LLVM?
- 10. ¿Qué lenguaje ensamblador aprender?
- 11. ¿Cómo funciona un ensamblador?
- 12. Analizar código ensamblador
- 13. Lenguaje ensamblador a C
- 14. "Ensamblaje" vs. "Ensamblador"
- 15. lenguaje ensamblador y optimización
- 16. XOR registro, registro (ensamblador)
- 17. Terminología: "registros" en programación en lenguaje ensamblador
- 18. ¿cómo funcionan las llamadas a procedimiento en el ensamblador?
- 19. Hello World utilizando el ensamblador x86 en Mac 0SX
- 20. ¿Cómo compilo el código ensamblador JVM en bytecode?
- 21. ¿Cómo hacer un ciclo en el lenguaje ensamblador x86?
- 22. ¿Cómo funciona `Skipcond` en el lenguaje ensamblador MARIE?
- 23. cómo se implementó lisp en lenguaje ensamblador?
- 24. Símbolos reubicables en formato ELF (lenguaje ensamblador)
- 25. Desreferenciar una etiqueta en ensamblador x86
- 26. Escribiendo un ensamblador, necesito ayuda
- 27. Lenguaje ensamblador - ¿Cómo hacer Modulo?
- 28. ¿Intel y el procesador AMD tienen el mismo ensamblador?
- 29. Al añadir dos cuerdas en ensamblador x86
- 30. Ejecutando código ensamblador con python
Estoy en el mismo barco. Realmente nunca recogí el asm en Linux porque no hay presencia real. Tal vez sea porque en el crackeo de Windows está de moda. –
Esto no responde completamente mi pregunta. Todavía quiero saber qué comandos de consola utilizaría para compilar y ejecutar programas en NASM o gas –
Mi preferencia es NASM. Te doy un poco de información sobre cómo ponerlo en funcionamiento en Ubuntu a continuación. – Justin