Assemblieren



  • Ist irgendwo genau erklärt, wie die einzelnen Befehle in Maschinencode übersetzt werden. z.B.

    mov   eax, ecx
    

    wird zu

    8B C1
    

    weil, 8B Opcode für mov reg/memreg ist und C1 naja, bestimmt halt die Operanden. Da kommt meine Bildungslücke durch, die will ich schließen.

    MfG
    DDR-RAM



  • Sowohl Intel als auch AMD bieten entsprechende Dokumentationen ihrer CPU zum Download an.
    Am ausfuehrlichsten ist da AFAIK die Doku des Pentium.
    Einen Link habe ich gerade nicht zur Hand, viel Erfolg beim Umgraben ihrer Internetseiten.



  • der befehl mov eax,ecx wird zu 66 89 C8 oder oder 66 8B C1 das 66 sagt aus, dass die operatorengröße ab x386 sein soll, also 32 bit 8B oder 89 sagt aus das mov r/m,r/m kommt daruaf an, ob der erste oder der zweite operand eine adresse beinhaltet. aber bei zwei registern egal, nur die reihenfollge spielt eine rolle. aber am besten siehst du dir die tabellen einfach mal selber an. dann verstehst es wahrscheinlich eher als durch meine magere erklärung! 😉
    ➡ http://www.sandpile.org/ hammers seite im punkto befehlslisten! 👍



  • pi88el: Das stimmt so auch nicht. Es hängt davon ab ob man im 16bit oder im 32bit mode ausführt. 0x66 bedeutet nur "wenn 16bit mode, nimm 32bit operand, wenn 32bit mode, nimm 16bit operand". Bin mir aber nicht mehr ganz sicher dabei.

    Am besten fand ich aber auch das intel manual #2 instruction set reference und dann natürlich noch den output von assemblern inspizieren. Das mit den ModRM Byte etc. wird da gleich am anfang erklärt 😉



  • wo bekommt man den das manual? 😕
    ich habe schon öfters gesucht und nichts gefunden. und bitte nicht einfach sagen, auf der website von intel. wenn jemand nen link kennt bitte posten.



  • Hier steht alles, was man bräuchte: http://www.intel.com/products/processor/manuals/index.htm


Anmelden zum Antworten