From 1fc1b52b6957e37359334ba22ce1a76feb484914 Mon Sep 17 00:00:00 2001 From: CaesiumFox Date: Wed, 18 Jun 2025 10:04:11 +0300 Subject: [PATCH 1/2] Hotfix jalr --- app/src/kernel/Description.generated.ts | 3 ++- dsl/rv32i.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/kernel/Description.generated.ts b/app/src/kernel/Description.generated.ts index 8b3c141..49a67f4 100644 --- a/app/src/kernel/Description.generated.ts +++ b/app/src/kernel/Description.generated.ts @@ -3241,8 +3241,9 @@ new InstructionDescription("I", BitDepth.BIT_32 | BitDepth.BIT_64, 32, "jalr") .addField(new Matcher("opcode", "0,1,2,3,4,5,6", "1110011")) .addField(new Matcher("funct3", "12,13,14", "000")) .addArg(new ArgumentPattern("rd", "7,8,9,10,11", "regx")) + .addArg(new ArgumentPattern("imm", "20,21,22,23,24,25,26,27,28,29,30,31", "num")) .addArg(new ArgumentPattern("rs1", "15,16,17,18,19", "regx")) - .addArg(new ArgumentPattern("imm", "21,22,23,24,25,26,27,28,29,30,20,12,13,14,15,16,17,18,19,31", "double")) + .setArgFormat("_, _(_)") .setJump({ label: "out" }), new InstructionDescription("I", BitDepth.BIT_32 | BitDepth.BIT_64, 32, "pause") diff --git a/dsl/rv32i.yml b/dsl/rv32i.yml index 8f2016e..a73ab6f 100644 --- a/dsl/rv32i.yml +++ b/dsl/rv32i.yml @@ -245,7 +245,8 @@ Sets: jump: 1 - mnemonic: "jalr" fields: [ rv32i_opcode_jalr, rv32i_funct3_jalr ] - args: [ rv32i_rd, rv32i_rs1, rv32i_j_imm ] + args: [ rv32i_rd, rv32i_i_imm, rv32i_rs1 ] + format: "_, _(_)" jump: out - mnemonic: "pause" From 2690e40e03f3be9b5c58583ebaa00a7202a74961 Mon Sep 17 00:00:00 2001 From: CaesiumFox Date: Wed, 18 Jun 2025 10:13:31 +0300 Subject: [PATCH 2/2] Fix test --- app/src/kernel/Adjuster.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/kernel/Adjuster.test.ts b/app/src/kernel/Adjuster.test.ts index 58e8f95..a47e54e 100644 --- a/app/src/kernel/Adjuster.test.ts +++ b/app/src/kernel/Adjuster.test.ts @@ -61,13 +61,13 @@ describe("adjuster", () => { test("smoke with out jump", () => { const result = performDisassemble(` -e7 00 05 00`, +e7 00 45 00`, {order: InputOrder.BYTE_ORDER_LE, bytesSkip: 0}, {bitDepth: BitDepth.BIT_32} ) as DisassembleOutputValid expect(result.valid).toEqual("valid") expect(simplifiedRepresentation(result.result)) - .toEqual([["jalr", "ra, a0, 327680", {"label": "out"}]]); + .toEqual([["jalr", "ra, 4(a0)", {"label": "out"}]]); }) test("smoke with back jump", () => {