So, dann schreib' mal den Text "Hallo Welt" in eine Textdatei und häng' .exe an den Dateinamen an. Du erhältst kein ausführbares Programm.
Linux hat ein anderes Format für ausführbare Dateien
...
Hm, ich habe "Prozessorenbefehle" geschrieben und nicht ASCII-Text.
Wenn ich die Prozessorenbefehle in eine Datei schreibe (den auszugebenden ASCII Text natürlich auch) und das ganze *.exe nenne, bekomme ich eine ausführbare Datei. Also für ein einfaches HelloWorld wäre der Code in hexadezimaler schreibweise:
Erläuterung: BA füllt das DX-Register mit dem folgenden 16-Bit Wert 0108, was der Offset-Adresse des auszugebenden String entspricht. B4 füllt das AH-Register mit dem folgenden Wert 09, weil wir die Funktion 9 des Dos-Interruptes aufrufen wollen. CD 21 ruft nämlich den Dos-Interrupt 21h auf, der einen $-terminierten String ausgibt. C3 ist der Rücksprungbefehl - hier wird das Programm beendet und es geht zurück zu Windows. Der Rest ist der $-terminierte ASCII Code von "Hallo Welt" (48=H bis 74=t) natürlich alles in Hexadezimalschreibweise, damit man es mit einem Hexeditor als *.exe speichern kann und ein ausführbares Programm bekommt (ein sehr kleines HelloWorld - das schafft man mit C nie).
Man kann unter Windows also einfach Prozessorenbefehle in eine Datei schreiben, dieser die richtige Endung geben und ausführen ohne dass man sich an irgendein Dateiformat halten muss. Und ich meine, dass das unter Linux nicht geht - aber probiert habe ich es noch nicht. Wäre aber quasi der gleiche Code, bloß dass man statt Dos-Interrupts natürlich Linux System Calls verwenden sollte.