Op/Maschinencodes



  • Hallo,

    Ich hätte eine sehr wichtige Frage : Ich programmiere in Assembler. Ich weiß nicht ob das für einen Assembler-Programmierer von Bedeutung ist aber :

    Es wird gesagt das die Maschinenbefehle / opcodes in Bitmusterform im Bef.werk integriert sind ( manche in 2 Varianten --> .B && . W ) . Außerdem gibt es zu jedem Maschinenbefehl / opcode ein zugehöriges Steuersignal.

    Was ich nicht ganz verstehe :
    Z. B. ein MOV - Befehl kann durch unterschiedliche Bitmuster ersetzt werden ( je nach Adressierungsart ( . B / .W ) --> Es wird im Befehlswerk ein zugehöriges Steuersignal zum Maschinenbefehl losgeschickt , welches das Befehl realisiert --> Aber !! :

    Ein Mnemonic kann durch unterschiedlichste Bitmuster ersetzt werden --> Ich dachte im Befehlswerk sind nur Grundbefehle MOV / MOV.B integriert --> Das MOV - Mnemonic kann aber durch mehrere Bitmuster ersetzt werden..

    Und außerdem : Wenn es nur 8 Datenleitungen gibt --> Wie wird ein Maschinencode / opcode das 16 bit groß ist denn zum Befehlswerk transportiert?



  • seed_seed schrieb:

    Es wird gesagt das die Maschinenbefehle / opcodes in Bitmusterform im Bef.werk integriert sind ( manche in 2 Varianten --> .B && . W ) . Außerdem gibt es zu jedem Maschinenbefehl / opcode ein zugehöriges Steuersignal.

    Im Prinzip richtig. Wenn du entsprechende Optionsbits direkt als Teil der OpCodes betrachtest. Dann sollte man bei Befehlen wie mov aber besser von "Befehlsgruppen", so nenne ich das mal, sprechen. Fuer diese kann es dann weit mehr Funktionen und Kodierungen geben. zB. um alle Adressierungsarten zu unterscheiden.

    seed_seed schrieb:

    Was ich nicht ganz verstehe :
    Z. B. ein MOV - Befehl kann durch unterschiedliche Bitmuster ersetzt werden ( je nach Adressierungsart ( . B / .W ) --> Es wird im Befehlswerk ein zugehöriges Steuersignal zum Maschinenbefehl losgeschickt , welches das Befehl realisiert

    Man koennte zwar das Befehlswerk so implementieren, dass der selbe Befehl tatsaechlich durch mehrere verschiedene Bitmuster dargestellt werden kann, bei Unterscheidungen der Operandenweite (B oder W) handelt es sich aber praktisch vielleicht um einen gleichen Befehl der Befehlsgruppe mov, praktisch sind das aber natuerlich nicht die selben Befehle. Sie bewirken jeweils etwas anderes.
    So gesehen ist das falsch: ein mov-Befehl wird vom Assembler idR. seinen Operanden entsprechend auch nur durch ein spezifisches "Bitmuster" ersetzt.

    seed_seed schrieb:

    Ein Mnemonic kann durch unterschiedlichste Bitmuster ersetzt werden --> Ich dachte im Befehlswerk sind nur Grundbefehle MOV / MOV.B integriert --> Das MOV - Mnemonic kann aber durch mehrere Bitmuster ersetzt werden..

    Wie schon gesagt: So nicht richtig. Im Befehlswerk sind alle Bitmuster fuer alle Operandenkombinationen des Mov-Befehls enthalten.
    Der Assembler ersetzt je nach Operanden den mov-Befehl durch entsprechende Bitmuster.

    seed_seed schrieb:

    Und außerdem : Wenn es nur 8 Datenleitungen gibt --> Wie wird ein Maschinencode / opcode das 16 bit groß ist denn zum Befehlswerk transportiert?

    zB. in 2 Schritten mit jeweils anderem Befehlswerkzustand...
    Hierfuer gilt aber wie fuer den Rest meiner Erklaerungen: Das ist vielleicht eine einfache Moeglichkeit. In der Praxis wird das Ganze sehr wahrscheinlich noch anders implementiert.



  • Hallo,

    Ich glaube ich habe es jetzt verstanden : Der MOV-Maschinenbefehl ist in mehreren Varianten im Befehlswerk integriert --> 27 Grundbefehle , etw. unscharf formuliert --> 27 Grundbefehlgruppen.
    Aber die Bitmuster, die Assembler erzeugt müssen 100% im Befehlswerk existenz sein. Sonst könnte der Befehl auch nicht ausgeführt werden.



  • Koennte man IMHO so sagen...


Anmelden zum Antworten