Copie locale de :
http://www.online.ee/~andre/i80386/Opcodes/
Les instructions x86 utilisées dans le projet minicc sont en
ROUGE.
Seul mode utilisé : 32 bits avec les registres étendus (eax, ecx, edx, ebp, esp).
AAA -- ASCII Adjust after Addition AAD -- ASCII Adjust AX before Division AAM -- ASCII Adjust AX after Multiply AAS -- ASCII Adjust AL after Subtraction ADC -- Add with Carry ADD -- Integer Addition AND -- Logical AND ARPL -- Adjust RPL Field of Selector BOUND -- Check Array Index Against Bounds BSF -- Bit Scan Forward BSR -- Bit Scan Reverse BT -- Bit Test BTC -- Bit Test and Complement BTR -- Bit Test and Reset BTS -- Bit Test and Set CALL -- Call Procedure CBW/CWDE -- Byte to Word/Word to Doubleword CDQ -- Doubleword to Quadword CLC -- Clear Carry Flag CLD -- Clear Direction Flag CLI -- Clear Interrupt Flag CLTS -- Clear Task-Switched Flag in CR0 CMC -- Complement Carry Flag CMP -- Compare Two Operands CMPS/CMPSB/CMPSW/CMPSD -- Compare String Operands CWD/CDQ -- Word to Doubleword/Doubleword to Quadword DAA -- Decimal Adjust AL after Addition DAS -- Decimal Adjust AL after Subtraction DEC -- Decrement by 1 DIV -- Unsigned Divide ENTER -- Make Stack Frame for Procedure Parameters HLT -- Halt IDIV -- Signed Divide IMUL -- Signed Multiply IN -- Input from Port INC -- Increment by 1 INS/INSB/INSW/INSD -- Input from Port to String INT/INTO -- Call to Interrupt Procedure IRET/IRETD -- Interrupt Return Jcc -- Jump if Condition is Met JMP -- Jump LAHF -- Load Flags into AH Register LAR -- Load Access Rights Byte LEA -- Load Effective Address LEAVE -- High Level Procedure Exit LGDT/LIDT -- Load Global/Interrupt Descriptor Table Register LGS/LSS/LDS/LES/LFS -- Load Full Pointer LLDT -- Load Local Descriptor Table Register LMSW -- Load Machine Status Word LOCK -- Assert LOCK# Signal Prefix LODS/LODSB/LODSW/LODSD -- Load String Operand LOOP/LOOPcond -- Loop Control with CX Counter LSL -- Load Segment Limit LTR -- Load Task Register MOV -- Move Data MOV -- Move to/from Special Registers MOVS/MOVSB/MOVSW/MOVSD -- Move Data from String to String MOVSX -- Move with Sign-Extend MOVZX -- Move with Zero-Extend MUL -- Unsigned Multiplication of AL or AX NEG -- Two's Complement Negation NOP -- No Operation NOT -- One's Complement Negation OR -- Logical Inclusive OR OUT -- Output to Port OUTS/OUTSB/OUTSW/OUTSD -- Output String to Port POP -- Pop a Word from the Stack POPA/POPAD -- Pop all General Registers POPF/POPFD -- Pop Stack into FLAGS or EFLAGS Register PUSH -- Push Operand onto the Stack PUSHA/PUSHAD -- Push all General Registers PUSHF/PUSHFD -- Push Flags Register onto the Stack RCL/RCR/ROL/ROR -- Rotate REP/REPE/REPZ/REPNE/REPNZ -- Repeat Following String Operation RET -- Return from Procedure SAHF -- Store AH into Flags SAL/SAR/SHL/SHR -- Shift Instructions SBB -- Integer Subtraction with Borrow SCAS/SCASB/SCASW/SCASD -- Compare String Data SETcc -- Byte Set on Condition SGDT/SIDT -- Store Global/Interrupt Descriptor Table Register SHLD -- Double Precision Shift Left SHRD -- Double Precision Shift Right SLDT -- Store Local Descriptor Table Register SMSW -- Store Machine Status Word STC -- Set Carry Flag STD -- Set Direction Flag STI -- Set Interrupt Flag STOS/STOSB/STOSW/STOSD -- Store String Data STR -- Store Task Register SUB -- Integer Subtraction TEST -- Logical Compare VERR, VERW -- Verify a Segment for Reading or Writing WAIT -- Wait until BUSY# Pin is Inactive (HIGH) XCHG -- Exchange Register/Memory with Register XLAT/XLATB -- Table Look-up Translation XOR -- Logical Exclusive OR