Opcode

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Genaue Fragenstellungen sind super!

    Moin,
    so direkt kann man deine Frage leider nicht beantworten - da muss man sich auf seine Interpretationsgabe verlassen ... also bitte etwas genauer.
    Meine Vermutung ist, dass du den Opcode einer 16bit Maschine meinst und du den Mnemonic rausfinden solltest, oder? Dazu bräuchtest du allerdings genaue Angaben zum Befehlssatz der CPU.
    Worauf die Aufgabe in diesem Fall rausläuft, sind Bitoperationen in C d.h. das Untersuchen von Werten auf Bitebene.
    Beispiel:

    Quellcode

    1. short unsigned int opcode = getOpcode(); // opcode holen
    2. short unsigned int op_mask = 0x0f; // -> binaer: 0...00001111
    3. short unsigned int offset_mask = 0xf0; // -> binaer: 0...11110000
    4. shot unsigned int operation = opcode & op_mask;
    5. shot unsigned int offset = opcode & offset_mask;

    Kurz gesagt: Die Bitmasken dienen als Filter für die "interessanten" bits (1). Alle anderen werden auf Null gesetzt. Angewendet wir dieser Filter dann per AND (&) operation d.h. es werden alle bits einzeln entsprechend und-verknüpft (bit 0 von opcode mit bit 0 von op_mask => bit 0 von operation usw.). Dadurch treten im Ergebnis nur noch Werte im Bereich der gesetzten Bits auf und können einfach per switch() behandelt werden.

    so, vielleicht hilft das ja schon mal weiter :D

    doei,
    Zappotek[/b]
    Microsoft gives you Windows, UNIX gives you the whole house.