Minimize mos65816 Instruction and Operand

This commit is contained in:
gingerBill
2026-06-15 14:32:42 +01:00
parent 59c4292224
commit b006a8853e
2 changed files with 4 additions and 5 deletions

View File

@@ -11,14 +11,14 @@ Instruction_Flags :: bit_field u8 {
}
Instruction :: struct #packed {
ops: [2]Operand `fmt:"v,operand_count"`, // 32 bytes (only MVN/MVP use 2; rest use 0 or 1)
ops: [2]Operand `fmt:"v,operand_count"`, // 20 bytes (only MVN/MVP use 2; rest use 0 or 1)
mnemonic: Mnemonic, // 2
operand_count: u8, // 1
flags: Instruction_Flags, // 1
length: u8, // 1
_: [3]u8, // 3
_: [7]u8, // 3
}
#assert(size_of(Instruction) == 40)
#assert(size_of(Instruction) == 32)
@(require_results)
inst_none :: #force_inline proc "contextless" (m: Mnemonic) -> Instruction {

View File

@@ -90,9 +90,8 @@ Operand :: struct #packed {
},
kind: Operand_Kind,
size: u8,
_: [6]u8,
}
#assert(size_of(Operand) == 16)
#assert(size_of(Operand) == 10)
@(require_results) op_reg :: #force_inline proc "contextless" (r: Register) -> Operand { return Operand{reg = r, kind = .REGISTER, size = 1} }
@(require_results) op_imm8 :: #force_inline proc "contextless" (v: i64) -> Operand { return Operand{immediate = v, kind = .IMMEDIATE, size = 1} }