Frage zum Verständnis von Assemblern etc.

...komplette Frage anzeigen

3 Antworten

WO GIBT MAN DIE BEFEHLE EIN ?

In den Editor natürlich (vi, emacs, notepad, edlin)! gcc erkennt Dateien mit den Endungen .s, .S und .sx als Assembler-Code. Andere Compiler erwarten .asm. Alternativ kannst Du vom Prozessor-Hersteller einen Assembler und einen Linker herunterladen und die Text-Dateien damit in ausführbare Programme übersetzen. Auf der Kommandozeile läuft das etwa so ab:

> notepad.exe hello_world.asm
> asm hello_world.asm
> link hello_world.obj
> hello_world.exe

In der Theorie wird dann "Hello World" ausgegeben. In der Praxis fliegen aber erst hundert Fehlermeldungen, und Dein Programm verursacht nur einen "Segmentation fault" :-(

1:1 und in echtzeit den Code zu kompilieren... bin ich soweit richtig ?

Assembler-Code wird fast unverändert in Maschinensprache übersetzt. Es gibt nur wenig Unterstützung, wie etwa Sprung-Marken (Namen für Adressen) oder bedingte Befehle (Debug-Code). Dafür geht das Übersetzen natürlich recht flott. Aber "Echtzeit" würde ich das nicht nennen.

wie sieht das mit Unix aus ?

Genauso. Mit dem Betriebssystem hat Assembler erstmal nichts zu tun. Erst, wenn Dein Programm mehr machen will als nur lesen/schreiben und rechnen, muss es die entsprechenden Funktionen im System-Kern aufrufen. Und hier unterscheiden sich DOS und Unix erheblich (auch wenn DOS seinerzeit einiges von AIX abgekupfert hat). Hier siehst Du mal ein Beispiel:

  mov  edx,len   ;message length
 mov ecx,msg ;message to write
 mov ebx,1 ;file descriptor (stdout)
 mov eax,4 ;system call number (sys_write)
 int 0x80 ;call kernel

Die Befehle (mov) und Register (eax) sind prozessorabhängig. Die Werte (4=Zeichenkette ausgeben) werden dagegen vom System vorgegeben. Auf OSX geht die Ausgabe vielleicht über Funktion #1 mit Text in ebx, und auf Android gibt es sie wohl gar nicht.

Mit anderen Worten: Programmierst Du Assembler, musst Du dich praktisch auf ein Betriebssystem und einen Prozessor festlegen.

Snoww 23.05.2015, 20:41

Danke schonmal für deine ausführliche Antwort :D

eine Frage hätte ich noch ^^ undzwar die frage hört sich jetzt wirklich extrem Kindisch an aber das zu UMschreiben dauert zu lange :D

Wie machen die "Hacker" das in den Filmen ... also was mich daran interessiert ist das sie immmer irgendeine Kommandoeingabe zur verfügung haben... ich dachte jetzt erstmal das ist so ein ASsembler jedoch kann man so einen garnicht Starten wenn man nicht die nötigen Rechte darauf besitzt .... Mich interessiert das halt wirklich weil da setzen sich dei vermeidlichen Hacker an das System und haben direkt ne Konsole wo die dann dran Eskalieren :D

ich hoffe das hört sich nicht zu Kindisch und Science Fiction an ^^ LG Philip

1
ralphdieter 24.05.2015, 12:55
@Snoww

Wie machen die "Hacker" das in den Filmen

Das allein wäre schon eine "gute Frage" :)

Hacker benutzen eine Shell ("Terminal-Programm") und tippen dort ihre Befehle ein. Zum einen geht das Tippen erheblich schneller als das Klicken mit der Maus, zum andern gibt es unglaublich viele Befehle, für die noch niemand eine grafische Oberfläche entwickelt hat.

Befehle sind dabei alle Programme, die das Betriebssystem bietet plus alles, was extra installiert oder selbst geschrieben wurde. Die Shell selbst legt noch ein paar eingebaute Befehle drauf und bietet zusätzlich Ein-/Ausgabe-Umleitung, Ausführen im Hintergrund, Variablen, Fallunterscheidungen, Schleifen und und und.

Einen ersten Eindruck bekommst Du, wenn Du nach Bash (Unix) bzw. PowerShell (Windows) suchst.

1

Ähh was meinst du micht echtzeit kompilierung ? Du schreibst das als Textdatei runter und lässt es dann von einem Assembler assemblieren .. UNIX und Windows haben kaum was gemeinsam, sicher gibt es da ein paar Standard Kommands die gleich sind, aber an sich nicht.

Aus der Frage geht nicht ganz klar hervor, was du jetzt eigentlich wissen willst

Was möchtest Du wissen?