Crash-Override
02.08.2005, 15:01
Das sich Linux erstaunlich gut (besser als Windows) über Assembler programmieren lässt durfte ich herausfinden. Das es "anders" (wie so oft) ist wahr klar, aber das bekomm ich schon hin, dachte ich mir, und hab auch fast alles hinbekommen. Jetzt sitz ich aber grad an einem 300 Seiten Datenblatt über die Linux-System aufrufe und zieh mir die wichtigsten rein. Was zur Hölle soll der Aufruf "fork'" Nr. 002?
Linus geht in seinem Buch kurz auf die wichtigsten 6 Aufrufe ein, und Fork beschreibt er wie folgt:
Dann gibt es das Konzept des fork, das den grundlegenden Unix-Operationen angehört. Wenn ein Prozess einen fork ausführt, legt er eine komplette Kopie seiner selbst an. Auf diese Weise bekommst du identische Kopien. Die Kind-Kopie wird meistens dazu benutzt, einen anderen Prozess auszuführen - sich selbst durch ein neues Programm zu ersetzen. Das ist die zweite elementare Funktion.
Nun frag ich mich wozu ein neues Programm dafür ausführen, warum kann ich das nicht einfach aus dem aktuellen Programm? Linux/Unix kennt doch afaik keinen exklusiven Zugriff auf Dateien, deshalb kann man doch Dateien verändern auch wenn sie gerade ausgeführt werden...
__________________
Desweiteren hat jemand noch ein paar Links zum Thema Assembler unter Linux? Viel hab ich nicht gefunden...
;###################################;
;# Hello World from ASM [Linux] #;
;###################################;
section .text
global _start
;###################################;
;# Variablen #;
;###################################;
msg_hello db 'Hello world',0x0A ; Text incl. Zeilenumbruch LF (0x0A)
len_hello equ $ - msg_hello ; Länge des Textes berechnen (12 Bytes)
;###################################;
;# START #;
;###################################;
_start: ; Jear, hier fängt's an...
mov eax,4 ; Systemaufruf Nr. 4 (sys_write) zur Textausgabe
mov ebx,1 ; Ausgabekanal Nr.1 = stdout
mov ecx,msg_hello ; Adresse des Textes im Speicher
mov edx,len_hello ; Länge des Textes in Bytes
int 0x80 ; Jetzt ausführen!
mov eax,1 ; Systemaufruf Nr. 1 (sys_exit) um Programmende hervorzurufen
int 0x80 ; Und ab damit...
Assembler ist einfach coll: Hello World very easy... (NASM-Code)
Linus geht in seinem Buch kurz auf die wichtigsten 6 Aufrufe ein, und Fork beschreibt er wie folgt:
Dann gibt es das Konzept des fork, das den grundlegenden Unix-Operationen angehört. Wenn ein Prozess einen fork ausführt, legt er eine komplette Kopie seiner selbst an. Auf diese Weise bekommst du identische Kopien. Die Kind-Kopie wird meistens dazu benutzt, einen anderen Prozess auszuführen - sich selbst durch ein neues Programm zu ersetzen. Das ist die zweite elementare Funktion.
Nun frag ich mich wozu ein neues Programm dafür ausführen, warum kann ich das nicht einfach aus dem aktuellen Programm? Linux/Unix kennt doch afaik keinen exklusiven Zugriff auf Dateien, deshalb kann man doch Dateien verändern auch wenn sie gerade ausgeführt werden...
__________________
Desweiteren hat jemand noch ein paar Links zum Thema Assembler unter Linux? Viel hab ich nicht gefunden...
;###################################;
;# Hello World from ASM [Linux] #;
;###################################;
section .text
global _start
;###################################;
;# Variablen #;
;###################################;
msg_hello db 'Hello world',0x0A ; Text incl. Zeilenumbruch LF (0x0A)
len_hello equ $ - msg_hello ; Länge des Textes berechnen (12 Bytes)
;###################################;
;# START #;
;###################################;
_start: ; Jear, hier fängt's an...
mov eax,4 ; Systemaufruf Nr. 4 (sys_write) zur Textausgabe
mov ebx,1 ; Ausgabekanal Nr.1 = stdout
mov ecx,msg_hello ; Adresse des Textes im Speicher
mov edx,len_hello ; Länge des Textes in Bytes
int 0x80 ; Jetzt ausführen!
mov eax,1 ; Systemaufruf Nr. 1 (sys_exit) um Programmende hervorzurufen
int 0x80 ; Und ab damit...
Assembler ist einfach coll: Hello World very easy... (NASM-Code)