Assembler Material Grundlagen GNU Assembler GNU Debugger glibc Cygwin VirtualBox
Pfad: Startseite / Fächer / Informatik / Assembler / Grundlagen
Autor: mk
21.05.2010 06:53:25
1072
Grundlagen

Einfaches C-Programm hello1 unter Linux

Mit einem Text-Editor wird folgendes einfache C-Programm geschrieben und unter hello.c abgespeichert.

#include <stdio.h>

int main( void )
{
   printf("Hello, world!\n");
   return 0;
}

Das Programm lässt sich mit dem GNU-C-Compiler gcc in die ausführbare Datei hello1 übersetzen.

gcc -o hello1 hello.c

Das Programm hello1 wird ausgeführt. Interessant ist seine Größe. Es wurden auf der Konsole elementare Befehle wie cd, ls, ... verwendet. Das Kommando ls -l zeigt auch die Zugriffsrechte.

Shell

Einfaches Assembler-Programm hello2 unter Linux

Mit einem Text-Editor wird folgendes einfache Assembler-Programm geschrieben und unter hello2.asm abgespeichert.

.section .data
hello: .ascii "Hallo Welt!\n"
.section .text
.globl _start
_start:
    mov $4, %eax     # 4 fuer den Syscall 'write'
    mov $1, %ebx     # File Descriptor
    mov $hello, %ecx # Speicheradresse des Textes
    mov $12, %edx    # Laenge des Textes
    int $0x80        # Interrupt auslösen
    mov $1, %eax     # das
    mov $0, %ebx     # uebliche
    int $0x80        # Beenden

Assemblieren, Linken, Ausführen

Assembler

Vergleiche die Dateigrößen von hello1 und hello2.

Aufgabe

Lies den wikipedia-Artikel zum Systemaufruf. Warum wird zum Aufruf ein Interrupt aufgerufen?

Links

hello2.asm, eingabe.asm, p18.asm, p20.asm