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:

Zitat Zitat von Linux T. Just for Fun S. 62-63

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...

Code:
;###################################;
;# 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)