Zitat Zitat von Rolus
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:

[...]

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.

freundliche Grüße, Rolus
Und das funktioniert genau deshalb, weil Windows nicht ausschließlich nach der Dateiendung sieht. Was du schreibst ist eine COM-Datei und Windows weiß das (bei ausführbaren Dateien bestimmt Windows anhand des Inhalts der ersten paar Bytes, um welches Format es sich handelt. Beispielsweise ist bei 9x command.com in Wirklichkeit eine PE und wird auch als solche ausgeführt).

Wie Dingsi schon angemerkt hat hängt die Ausführbarkeit einer Datei unter Linux nur davon ab, ob sie richtig gechmodet ist.
Ob man den Code direkt ausführen kann ist fraglich - als Linux entwickelt wurde was COM schon dermaßen obsolet, daß es im Kernel AFAIK keine Unterstützung dafür gibt. Es sollte aber ziemlich einfach sein, ein Skript zu schreiben, das beliebigen Code im ELF einwickelt.
Falls der Kernel noch mit Unterstützung für a.out kompiliert wurde könnte es auch sein, daß man so relativ einfach seinen Code ausführen kann - aber ich bin mir da nicht sicher.