![]() |
|||
| HSG |
|
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.

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

Vergleiche die Dateigrößen von hello1 und hello2.
Lies den wikipedia-Artikel zum Systemaufruf. Warum wird zum Aufruf ein Interrupt aufgerufen?