Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   ASM zu binärcode bzw funktionierender exe? (https://www.delphipraxis.net/161943-asm-zu-binaercode-bzw-funktionierender-exe.html)

Memnarch 28. Jul 2011 15:40


ASM zu binärcode bzw funktionierender exe?
 
Tag allerseits.
Da mich das gebiet Assembler total interressiert(sowie Compilerbau :twisted:), würde ich gerne wissen, wie man von Assembler code zu einem ausführbaren programm kommt.

Wenn ich es richtig verstanden habe ist es doch so verkettet:

Hochsprache -> Assembler -> Binärcode (bitte dringenst korrigieren wenn ich falsch liege)


MFG
Memnarch

generic 28. Jul 2011 15:47

AW: ASM zu binärcode bzw funktionierender exe?
 
Assembler = Binärcode

Assembler ist nur eine Textanzeige des Binärcodes.
Das kannst du vergleichen mit der Darstellung von Zahlen, diese lassen sich im dezimalen System besser lesen als im binären.

0011 = 3

Es gibt nun noch spezielle Editoren, welche ASM-Code als "Hochsprache" behandeln und Sprungmarken mit Text darstellen. Diese Textmarken werden dann in Adressen beim kompilieren umgesetzt. Ohne diese Editoren müsste man die Adresse ausrechnen und eingeben.

Wenn du mal CPU "anfassen" möchtest, dann empfehle ich dir einen Mikrocontroller zu nehmen und diesen zu programmieren.

Beliebt sind die Atmel 8Bit Risc Prozessoren - billig und leicht zu beschalten.
Das schöne da dran - man muss alles per Hand machen, da es kein OS gibt.

p80286 28. Jul 2011 15:51

AW: ASM zu binärcode bzw funktionierender exe?
 
Die einfache Antwort wäre
Compilieren,Linken,fertig.
Aber das willst Du wahrscheinlich nicht lesen. Es gibt "Sprachpakete" bei denen es so gemacht wird, wie Du es skizziert hast:
Hochsprache -> (Makro)Assembler -> Binärcode -> Ausführbares Programm

Was sind denn Deine konkreten Anliegen?

Gruß
K-H

Memnarch 28. Jul 2011 15:59

AW: ASM zu binärcode bzw funktionierender exe?
 
Ich glaube wir haben uns etwas verpasst^^.

mir geht es darum:

wen ich z.B den ausgeschriebenen befehl "mov" habe, wie wird der "übersetzt". Gibt es dafür eine tabelle, wird der wert einfach aus den Asciizeichen berechnet? mit "mov" im Klartext kann eine CPU ja schlecht was anfangen o.O.

Und dan ebend noch: wie ist das mit einer Executable unter windows.?

EDIT: rote box war wohl wieder auf urlaub....

EDIT2: Also: ich möchte ein programm schreiben dass aus einer art selbst definierter hochsprache(hoch in anführungszeichen...eher was sehr simples proceduales) den noch für menschenlesbaren ASM code generiert. Ok da bin ich noch im stande mir selbst zu helfen. Wenn ich aber bei dem lesbaren ASM angekommen wäre, wie geht es dan weiter? Was muss ich tun, damit ich daraus dan ein ausführbares programm machen kann?

MFG
Memnarch

Neutral General 28. Jul 2011 16:06

AW: ASM zu binärcode bzw funktionierender exe?
 
Ich glaube ihr verwirrt ihn nur mehr...

Also man kann Assembler quasi 1:1 in Binären Code (ich nenne es mal so) umwandeln.

z.B. entspricht der Befehl "hlt" dem Byte (Opcode) 0xF4

mov eax, 20
inc eax
hlt

:arrow:

B8 14 00 00 00
40
F4

Liste mit Befehlen/Opcodes: http://ref.x86asm.net/

Infos zum Aufbau von Exe-Dateien findest du bei Wikipedia:
http://de.wikipedia.org/wiki/Portable_Executable
und natürlich bei Microsoft selbst:
http://msdn.microsoft.com/en-us/wind...dware/gg463119

Bummi 28. Jul 2011 16:14

AW: ASM zu binärcode bzw funktionierender exe?
 
Meinst Du TASM oder MSAM?

Memnarch 28. Jul 2011 16:33

AW: ASM zu binärcode bzw funktionierender exe?
 
@Neutral General: ah das ist doch schonmal was. Aber "quasi" bedeutet ja das ich trotzdem irgendwo ne referenz haben muss(also welcher opcode für welchen befehl ;) ). Aber damit komm ich schonmal weiter, danke.


@Bummi: o.O?

BUG 28. Jul 2011 16:41

AW: ASM zu binärcode bzw funktionierender exe?
 
Das Intel Architectures Software Developer's Manual ist das was du suchst, wenn du Bytecode selbst erstellen willst (ein Tutorial ist das allerdings nicht).
Kapitel 2 sollte imho die Zusammensetzung der Instruktionen beschreiben.

p80286 28. Jul 2011 17:22

AW: ASM zu binärcode bzw funktionierender exe?
 
@Bummi
ich denke das ist in diesem zusammenhang egal

Gruß
K-H

Edith:
vielleicht noch als Zusatz, der "Assemblercode" für ein LINUX-Programm ist der gleichen wie bei windows, da der Processor der gleiche ist. Nur die systemspezifischen Befehle, unterscheiden sich. (Linker)
Also alles was Du für das Laden des Programms und für die Speicheradressierung brauchst.
(OK ein bischen API und ....)

Namenloser 28. Jul 2011 18:26

AW: ASM zu binärcode bzw funktionierender exe?
 
Zitat:

Zitat von Memnarch (Beitrag 1114008)
@Neutral General: ah das ist doch schonmal was. Aber "quasi" bedeutet ja das ich trotzdem irgendwo ne referenz haben muss(also welcher opcode für welchen befehl ;) ). Aber damit komm ich schonmal weiter, danke.

Es gibt auf der Seite verschiedene Referenzen, ich habe für meinen Brainfuck-JIT-Compiler diese verwendet: http://ref.x86asm.net/coder32.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz