Maschinencode
-
Naja,
ich wollte eigentlich nur fragen, ob es noch heute Leute gibt, die tatsächlich noch den Maschinencode für Programmierung nutzen oder es überhaupt noch eine Möglichkeit dazu gibt.
(Obwohl man ehrlich sagen muss, selbst Assembler ist bereits Hardcore genug, deswegen schätze ich nicht, dass es noch jemand gibt, der das bringt)
-
naja, also machen wird das sicher keiner mehr (weil das ja glaub ich ziemlich sinnlos wäre)....
ich hab in der schule mal µC programmiert, und da hat der lehrer erzählt, wie er damals noch direkt hex-werte eingeben musste....aber die hat man ja auch nicht auswendig wissen müssen, da hat es genauso einen befehlssatz gegeben....
daher sehe ich nicht viel unterschied zu assembler programmieren, ob ich jetzt jmp oder 1234 eingebe is ja wirklich wurscht....aber vielleicht hab ich da auch was falsch verstanden ....mfg
-
naja, also ich würde schon sagen dass es einen Unterschied zwischen Hex und Assembler-code gibt! Schließlich ist Assembler-Programmierung auch mit Mnemonik verbunden und somit schonmal leichter zu merken als irgendwelche zeichen, man muss halt nur wissen wofür jmp oder mov etc. steht. Außerdem kann man mit Assembler sehr schnelle Programme Programme schreiben weil man dort direkt mit den Prozessorregistern arbeitet und sie somit gezielt einsetzen kann, somit ist die Assemblerprogrammierung, wenn man sie richtig anwendet schneller als jeder C++-Compiler oder ähnliche sachen!
Ich muss allerdings auch sagen, dass man für größerer Programme kein Assmbler benutzen sollte, nur wenn es sich um Zeitkritische Sachen handelt.Das war erstmal mein Statement dazu
-
Ich hab am C64er noch direkt Hex Gehackt, aber inzwischen ...
Nutz ich fast C/++ only, und nur noch selten für Performance Kritische stellen ASM - aber die stellen machen immer noch am meisten spaß *g
-
Original erstellt von Ringostarr:
Außerdem kann man mit Assembler sehr schnelle Programme Programme schreiben weil man dort direkt mit den Prozessorregistern arbeitet und sie somit gezielt einsetzen kann, somit ist die Assemblerprogrammierung, wenn man sie richtig anwendet schneller als jeder C++-Compiler oder ähnliche sachen!ich nehme nicht an, dass ein normaler ASM Programmierer für einen Intel Prozessor besseren asm Code schreiben kann, als der Intel C++ Compiler 7
sicher, mit Sachen wie SSE2, 3DNow/MMX,... hat man eine zeitlang den C++ Compiler etwas voraus gehabt. Aber die modernen Compiler können diese Sachen mittlerweile auch schon.
Mit asm kann man nur kleine Teile schneller machen, weil man zB mehr weiß als der Compiler über den Code. Aber bei einem größeren Programm wird garantiert der Compiler gewinnen.
-
Aber nicht bei kleinen Performance kritischen Sachen.
Z.B. bei einer Math Library für 3D Sachen. Da hilft nur Hand anlegen, und selbst optimieren. Denn jeder Compiler optimiert zwar, aber keiner bringt wirklich Optimalen Code hervor.
Ich würde auch fast alles in C/Cpp schreiben. Denn es geht einfach schneller und einfacher, aber wirklich extreme Sachen, wo es auf jede nano Sek. ankommt, da ist das eigene Hirn gefragt. Gut man kann wenn man den C Code überarbeitet selbst schon sehr viel herausholen, aber das letzte Bischen läßt sich nur durch Maschinen instructions herausholen. Das dumme ist nur, bei den x86 Prozzis ist es so wie mit OpenGL - jeder Hersteller hat extra Extensions, und kocht sein eigenes Süppchen ( SSE, 3DNow ... )
Ach ja - btw. - gepriesen sei RISC
[ Dieser Beitrag wurde am 29.03.2003 um 03:13 Uhr von SnorreDev editiert. ]
-
Ich habe mal beim Assembler-Programmieren in die Speicherstellen direkt die Maschienencodes reingeschrieben, um so das Programm in der Laufzeit zuändern. Die gleiche Technik wird AFAIK auch bei Buffer Overflow Exploits gebraucht.
Es ist zwar kein Programmieren in reinem Maschienencode, aber man braucht halt die Befehlscodes.
-
wo findet man denn tabellen etc. für solche hex-codes? würde mich mal interessieren, mit nem hexeditor ein "hello, world"-programm zu schreiben :p
ich nehme mal an, für die 2 worte ist man ein paar stunden beschäftigt, oder?
-
Original erstellt von Shade Of Mine:
**ich nehme nicht an, dass ein normaler ASM Programmierer für einen Intel Prozessor besseren asm Code schreiben kann, als der Intel C++ Compiler 7sicher, mit Sachen wie SSE2, 3DNow/MMX,... hat man eine zeitlang den C++ Compiler etwas voraus gehabt. Aber die modernen Compiler können diese Sachen mittlerweile auch schon.
Mit asm kann man nur kleine Teile schneller machen, weil man zB mehr weiß als der Compiler über den Code. Aber bei einem größeren Programm wird garantiert der Compiler gewinnen.**
du hast im allgemeinen Recht.
allerdings ist ein Compiler eben auch nur ein Programm. Assemblerprogrammierer denken etwas quer. Man muss Assemblerprogramme nicht verstehen, deshalb schreiben die Leute teilweise ziemlich unsauber - aber schnell.
Viele dieser 'optimierungen' eines Assemblerprogrammierers könnte man nicht in Regeln fassen. Beispielsweise werden Multiplikationen, etc. einfach so gebogen, dass sie durch Shiften errechnet werden können. Das ist dann schonmal um einiges schneller..cYa
DjR
-
Original erstellt von DocJunioR:
[...] Man muss Assemblerprogramme nicht verstehen, deshalb schreiben die Leute teilweise ziemlich unsauber [...]Wie man muss Assembler- Programme nicht verstehen? Is doch ausgemachter Blödsinn. Sonst würde es ja kaum Kommentare ( ; ) in Assembler geben
Außerdem ist es ja fast logisch, dass Assembler Programme ziemlich unsauber sind. In Assembler gibt es diese strukturierten Sachen wie for (C++) nicht.[ Dieser Beitrag wurde am 31.03.2003 um 14:52 Uhr von pAngel editiert. ]
-
bei Intel zB kann man sich die Befehlssatz doku zum P4 runterladen. und wenn ich mich nicht irre , hatten die da auch die opcodes dabei.
-
Original erstellt von <b7f7>:
bei Intel zB kann man sich die Befehlssatz doku zum P4 runterladen. und wenn ich mich nicht irre , hatten die da auch die opcodes dabei.Hmm, ich finde da nichts...
wo hast du das denn gefunden?
-
Such mal hier: http://search.intel.com/corporate/search.asp?category=ALL&SearchCrit=ALL&mh=200&isoCode=en&MimeType=ALL&version=2.0&q1=pentium+4+op+codes - da findest du alles zum Thema P4 Opcodes
-
Original erstellt von pAngel:
**Wie man muss Assembler- Programme nicht verstehen? Is doch ausgemachter Blödsinn. Sonst würde es ja kaum Kommentare ( ; ) in Assembler geben
Außerdem ist es ja fast logisch, dass Assembler Programme ziemlich unsauber sind. In Assembler gibt es diese strukturierten Sachen wie for (C++) nicht.[ Dieser Beitrag wurde am 31.03.2003 um 14:52 Uhr von [qb]pAngel** editiert. ][/QB]
Jupp, aber disassemblierst Du eine Exe - Datei, sind die Kommentare im Eimer
In Maschinencode kannst Du übrigens nichts dokumentieren :pcYa
DjR
-
Erstellte Programme in TASM lassen sich mit debug leicht disassemblieren und sind z.T. sehr leserlich. Das heißt, es ist durchaus ein nützliches Tool und muss keine anderen Sachen downloaden, selbst wenn sie komfortabler sind. Assembler selbst ist doch auch "unkomfortable"...
P.S.: @Ringostarr: Bald gibts soweit ich weiß übrigens ein Paul- Konzert in Deutschland
-
Für alle, die sich ernsthaft mit ASM beschäftigen wollen würde ich das Buch "Assembler Gepackt" empfehlen. Sind fast alle Mnemonics und Erweiterungen drin wie MMX, SSE, 3DNow, SSE2 usw.
-
Mit den Erweiterungen hab ich Probleme. Für was ist z.B. EAX? Ja, Akkumulator, Low und High, aber was bedeutet das "E"?
-
Extended wahrscheinlich. Vor der Einführung des 80386 gab es nur AX etc (16 bit). Diese Register wurden dann unter dem Namen EAX etc. auf 32 bit erweitert.