IN, OUT, XLAT, LEA, LDS, LES, ADC
This commit is contained in:
parent
782ff93ace
commit
08ef7d901b
@ -23,7 +23,14 @@ OpName :: enum {
|
|||||||
PUSH,
|
PUSH,
|
||||||
POP,
|
POP,
|
||||||
XCHG,
|
XCHG,
|
||||||
|
IN,
|
||||||
|
OUT,
|
||||||
|
XLAT,
|
||||||
|
LEA,
|
||||||
|
LDS,
|
||||||
|
LES,
|
||||||
ADD,
|
ADD,
|
||||||
|
ADC,
|
||||||
SUB,
|
SUB,
|
||||||
CMP,
|
CMP,
|
||||||
JMP,
|
JMP,
|
||||||
@ -204,6 +211,22 @@ instructions := [?]InstructionInfo {
|
|||||||
reg_info = reg_second_middle, has_address = true, word_size = LastBit{}, has_flip = true},
|
reg_info = reg_second_middle, has_address = true, word_size = LastBit{}, has_flip = true},
|
||||||
{ opname = .XCHG, desc = "", mask = 0b11111000, encoding = 0b10010000,
|
{ opname = .XCHG, desc = "", mask = 0b11111000, encoding = 0b10010000,
|
||||||
reg_info = reg_first_last, uses_accumulator = true, word_size = Force{}, },
|
reg_info = reg_first_last, uses_accumulator = true, word_size = Force{}, },
|
||||||
|
{ opname = .IN, desc = "", mask = 0b11111110, encoding = 0b11100100,
|
||||||
|
has_data = true, word_size = LastBit{}, },
|
||||||
|
{ opname = .IN, desc = "", mask = 0b11111110, encoding = 0b11101100,
|
||||||
|
word_size = LastBit{}, },
|
||||||
|
{ opname = .OUT, desc = "", mask = 0b11111110, encoding = 0b11100110,
|
||||||
|
has_data = true, word_size = FourthBit{}, },
|
||||||
|
{ opname = .OUT, desc = "", mask = 0b11111110, encoding = 0b11101110,
|
||||||
|
word_size = LastBit{}, },
|
||||||
|
{ opname = .XLAT, desc = "", mask = 0b11111111, encoding = 0b11010111,
|
||||||
|
},
|
||||||
|
{ opname = .LEA, desc = "", mask = 0b11111111, encoding = 0b10001101,
|
||||||
|
has_address = true },
|
||||||
|
{ opname = .LDS, desc = "", mask = 0b11111111, encoding = 0b11000101,
|
||||||
|
has_address = true },
|
||||||
|
{ opname = .LES, desc = "", mask = 0b11111111, encoding = 0b11000100,
|
||||||
|
has_address = true },
|
||||||
{ opname = .TBD, desc = "Reg/memory with register to either", mask = 0b11000100, encoding = 0b00000000,
|
{ opname = .TBD, desc = "Reg/memory with register to either", mask = 0b11000100, encoding = 0b00000000,
|
||||||
opcode_id = .First, reg_info = reg_second_middle, has_address = true, word_size = LastBit{}, has_flip = true },
|
opcode_id = .First, reg_info = reg_second_middle, has_address = true, word_size = LastBit{}, has_flip = true },
|
||||||
{ opname = .TBD, desc = "Immediate to register/memory", mask = 0b11111100, encoding = 0b10000000,
|
{ opname = .TBD, desc = "Immediate to register/memory", mask = 0b11111100, encoding = 0b10000000,
|
||||||
@ -371,6 +394,7 @@ get_opname :: proc(b: u8) -> string {
|
|||||||
name: string
|
name: string
|
||||||
switch b & 0b00111000 >> 3 {
|
switch b & 0b00111000 >> 3 {
|
||||||
case 0b000: name = "add"
|
case 0b000: name = "add"
|
||||||
|
case 0b010: name = "adc"
|
||||||
case 0b101: name = "sub"
|
case 0b101: name = "sub"
|
||||||
case 0b111: name = "cmp"
|
case 0b111: name = "cmp"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user