opcodes
-
hi,
was genau soll man unter opcodes verstehen? soweit ich weiß kann man jeden assembler-befehl durch einen opcode ersetzen und der prozessor führt die dann aus(so irgendwie).
Könnte ich nun irgendwie um einen einfachen "asm-compiler" zu schreiben einfach ein prog coden, welches den vom benutzer eingegebenen assembler-code in opcodes übersetzt, diese dann schön hintereinander im ram abspeichert und an die startadresse dieser opcode-liste springt? würde das funktionieren?oder falls ihr tutorials etc. zu diesem thema kennt wäre ich interresiert daran
bei google hab ich leider nix gefunden
MFG Marcel
-
ein Prozessor kennt nur Zahlen.
Der Buchstabe A ist dezimal die 65, also binär 0100 0001.
Irgendwie ist es doch klar, dass die Prozessorbefehle nicht im Klartext irgendwo auf der CPU stehen. Jeder Befehl wird durch eine Zahl angesprochen.
beispielsweise könnte (bei intel ist es nicht so!) die Addition zweier Zahlen der Befehl 0x01 sein.
Bei intel ist der Befehl MOV AX, nn durch B8 gekennzeichnet (es ist also der 184te Befehl auf dem Prozessor.) Ein Mov BX, nn ist BB anschließend kommt der 2Byte-Wert (Lo-Byte und Hi-Byte vertauscht). Mul bx heißt beispielsweise F7E3
Dieses B8 und BB, etc. ist der OpCode (Operation Code)ein Programabschnitt, der So aussieht:
B8 00 01 BB 10 00 F7 E3meint also nichts anderes als
mov ax, 100h
mov bx, 10h
mul bxdas Programm, das Du dir vorstellst, nennt man gemeinhin Assembler *fg*
%WINDIR%\system32\debug.exe
cya
DjR
-
hi danke für die antwort
aber eigentlich wollt ich wissen ob ich (mein programm) opcodes "manuel" in den speicher schreiben kann die dann von der CPU ausgeführt werden.
MFG Marcel
-
Ja natürlich.
-
debug macht's ja auch nicht anders.
du kannst das Ganze allerdings auch auf die Platte speichern.
-
hehe ihr seit gut
könntet ihr mir vielleicht auch sagen "wie" ich das mache?
-
Unter Windows lädst du die Exe-Datei in einen Hex-Editor und editierst munter dran rum.
Am Ende abspeichern, und voila! Alles läuft (hoffentlich).Es sei denn die exe ist irgendwie geschützt, was bei kommerziellen Programmen häufig der Fall ist. Sei es mit Prüfsummen oder verschlüsseltem Code.
-
ok nehmen wir mal an: kein windows, kein dos auch kein linux oder irgendso'n zeug...
kann mal jemand einen beispiel asm-quellcode zeigen, welcher ein paar opcodes in den ram(oder irgendwohin) speicher und diese dann ausführt?
MFG Marcel
-
Ueber den Sinn meines Beispiels laesst sich streiten, aber Du wolltest es ja nicht anders
(Code fuer RealMode);in dieser Variable steht die Zieladdresse (Segment:Offs) ;Die Reihenfolge ist wichtig! COfs0 dw xxxx CSeg0 dw xxxx .... ;ds zeigt auf das Segment, in dem oben definierte Variablen liegen. mov bx,[word ptr ds:COfs0] mov es,[word ptr ds:CSeg0] mov [word ptr es:bx],0CB40h ;Opcodes fuer inc ax (40h) und retf (CBh) xor ax,ax call [dword ptr ds:COfs0] ;wenn alles geklappt hat, sollte die Ausfuehrung hier fortgesetzt werden mit ax=1.
Wie Du siehtst: ueberhaupt keine Schwierigkeit, code wird hier genauso wie alle anderen Daten behandelt. Schwieriger wird das ganze dann erst im Protected Mode.
Hoffe, das war jetzt das, was Du meintest.[ Dieser Beitrag wurde am 16.01.2003 um 02:52 Uhr von Nobuo T editiert. ]
-
super! danke! genau das was ich wollte... jetzt bräuchte ich nur noch eine liste aller verfügbaren opcodes
gibts sowas irgendwo?
MFG Marcel
-
google mal.
assembler opcode
vielleicht hilft Dir auch HelpPC(hieß das Prog so?) weiter