From d074a7f8a4457ce62bad9d1ff0e7d09077d0990b Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 13 Aug 2025 15:27:30 -0600 Subject: [PATCH] make #ud non-panic --- gen/generate_interpreter.js | 6 +++--- gen/rust_ast.js | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gen/generate_interpreter.js b/gen/generate_interpreter.js index 02a9d902..0aa89fae 100755 --- a/gen/generate_interpreter.js +++ b/gen/generate_interpreter.js @@ -213,8 +213,9 @@ function gen_instruction_body_after_prefix(encodings, size) }), default_case: { + varname: "x", body: [ - `if DEBUG { panic!("Bad instruction at {:x}", *instruction_pointer); }`, + `dbg_log!("#ud ${encoding.opcode.toString(16).toUpperCase()}/{} at {:x}", x, *instruction_pointer);`, "trigger_ud();", ], } @@ -413,7 +414,7 @@ function gen_table() "use crate::cpu::cpu::{after_block_boundary, modrm_resolve};", "use crate::cpu::cpu::{read_imm8, read_imm8s, read_imm16, read_imm32s, read_moffs};", - "use crate::cpu::cpu::{task_switch_test, trigger_ud, DEBUG};", + "use crate::cpu::cpu::{task_switch_test, trigger_ud};", "use crate::cpu::instructions;", "use crate::cpu::global_pointers::{instruction_pointer, prefixes};", "use crate::prefix;", @@ -478,7 +479,6 @@ function gen_table() "use crate::cpu::cpu::{after_block_boundary, modrm_resolve};", "use crate::cpu::cpu::{read_imm8, read_imm16, read_imm32s};", "use crate::cpu::cpu::{task_switch_test, task_switch_test_mmx, trigger_ud};", - "use crate::cpu::cpu::DEBUG;", "use crate::cpu::instructions_0f;", "use crate::cpu::global_pointers::{instruction_pointer, prefixes};", "use crate::prefix;", diff --git a/gen/rust_ast.js b/gen/rust_ast.js index 23177801..60d7c285 100644 --- a/gen/rust_ast.js +++ b/gen/rust_ast.js @@ -32,7 +32,8 @@ export function print_syntax_tree(statements) if(statement.default_case) { - cases.push(`_ => {`); + const varname = statement.default_case.varname || "_"; + cases.push(`${varname} => {`); cases.push.apply(cases, indent(print_syntax_tree(statement.default_case.body), 4)); cases.push(`}`); }