Δημοσιεύτηκε: 22 Ιαν 2012, 23:17
από simosx
Δείτε και Πως γράφουμε Assembly σε Ubuntu μέσω GCC και as

Στο viewtopic.php?p=13606#p13606 υπάρχει μια δημοσίευση για το πως γράφουμε σε Assembly σε Ubuntu.
Εδώ γράφω το ίδιο, σε μορφή οδηγού.

Το πρώτο βήμα είναι να εγκαταστήσουμε τον Assembler, που για Linux προτείνεται ο Nasm,
Κώδικας: Επιλογή όλων
sudo apt-get install nasm

Εδώ είναι ένα μικρό πρόγραμμα σε Assembly όπου τυπώνει ένα μήνυμα. Γράψτε το σε αρχείο με όνομα helloworld.asm.
Κώδικας: Επιλογή όλων
global _start

section .data
hello db "Γεια σου Ubuntu-gr!", 10
length equ $-hello

section .text

_start:
mov eax, 4 ; write to file
mov ebx, 1 ; STDOUT handle
mov ecx, hello ; our message
mov edx, length ; size of message
int 80h ; execute the syscall

xor ebx, ebx ; send 0 as 'exit code'
mov eax, 1 ; terminate process
int 80h ; execute the syscall


Αν έχουμε Ubuntu 64-bit, τότε το μεταγλωττίζουμε με
Κώδικας: Επιλογή όλων
nasm -f elf64 helloworld.asm

ενώ αν έχουμε Ubuntu 32-bit, τότε μεταγλωττίζουμε με
Κώδικας: Επιλογή όλων
nasm -f elf helloworld.asm


Τέλος, κάνουμε τη σύνδεση (linking) με την εντολή
Κώδικας: Επιλογή όλων

ld -o helloworld helloworld.o


και το τρέχουμε με
Κώδικας: Επιλογή όλων
$ ./helloworld
Γεια σου Ubuntu-gr!