From 35678cfb79644e37dfd0329aa060c755192092c1 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 24 May 2017 11:50:45 +0200 Subject: Fix opcode --- main.go | 6 +- testdata/j1.dump | 3532 +++++++++++++++++++++++++++--------------------------- 2 files changed, 1769 insertions(+), 1769 deletions(-) diff --git a/main.go b/main.go index 1f0bc0e..609cf86 100644 --- a/main.go +++ b/main.go @@ -57,7 +57,7 @@ func Decode(v uint16) string { case v&(7<<13) == 1<<14: return fmt.Sprintf("CALL %0.4X", v&0x1fff) case v&(7<<13) == 3<<13: - op := (v & 15 << 8) >> 8 + op := (v >> 8) & 15 s := "ALU " + opcodes[op] if v&(1<<12) != 0 { s += " R→PC" @@ -71,13 +71,13 @@ func Decode(v uint16) string { if v&(1<<5) != 0 { s += " N→[T]" } - switch expand(v & (3 << 2) >> 2) { + switch expand((v >> 2) & 3) { case -1: s += " rstack-" case 1: s += " rstack+" } - switch expand(v & (3 << 0) >> 0) { + switch expand(v & 3) { case -1: s += " dstack-" case 1: diff --git a/testdata/j1.dump b/testdata/j1.dump index d02530e..674f0bc 100644 --- a/testdata/j1.dump +++ b/testdata/j1.dump @@ -1,208 +1,208 @@ 0000 1C5D UBRANCH 1C5D 0002 1C5D UBRANCH 1C5D -0004 6E81 ALU N T→N dstack+ +0004 6E81 ALU depth T→N dstack+ 0006 80FF LIT 00FF -0008 730F ALU Nu