diff options
| author | Cliff Click <cliffc@acm.org> | 2025-05-03 15:55:38 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2025-05-03 15:55:38 -0700 |
| commit | 2bedee089e65fa4d6a843e7497fc8bc5dc4be992 (patch) | |
| tree | 426fd5e1db359f41e3497562f0c8708764c9f6ca /chapter22/src/main/java/com | |
| parent | 1c9d3f51994d8bd8fadadbde2d1992018909081d (diff) | |
| download | Simple-2bedee089e65fa4d6a843e7497fc8bc5dc4be992.tar.gz Simple-2bedee089e65fa4d6a843e7497fc8bc5dc4be992.zip | |
back to i64 default
Sorting out 4b pointers first.
Back to i64 ints.
Everything compiles except the Person test which explicitly deals with pointer sizes.
Diffstat (limited to 'chapter22/src/main/java/com')
| -rw-r--r-- | chapter22/src/main/java/com/seaofnodes/simple/Parser.java | 6 | ||||
| -rw-r--r-- | chapter22/src/main/java/com/seaofnodes/simple/node/cpus/riscv/ImmRISC.java | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java index d551a72a..9d313046 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java @@ -115,7 +115,7 @@ public class Parser { put("i32" ,TypeInteger.I32); put("i64" ,TypeInteger.BOT); put("i8" ,TypeInteger.I8 ); - put("int" ,TypeInteger.I32); + put("int" ,TypeInteger.BOT); put("u1" ,TypeInteger.U1 ); put("u16" ,TypeInteger.U16); put("u32" ,TypeInteger.U32); @@ -135,7 +135,7 @@ public class Parser { _scope.define(ScopeNode.CTRL, Type.CONTROL , false, null, _lexer); _scope.define(ScopeNode.MEM0, TypeMem.BOT , false, null, _lexer); - _scope.define(ScopeNode.ARG0, TypeInteger.I32, false, null, _lexer); + _scope.define(ScopeNode.ARG0, TypeInteger.BOT, false, null, _lexer); ctrl(XCTRL); _scope.mem(new MemMergeNode(false)); @@ -159,7 +159,7 @@ public class Parser { // default main). FunNode main = _code.link(_code._main); StopNode stop = _code._stop; - if( main.ret().expr()._type==Type.TOP ) { + if( main.ret().expr()._type==Type.TOP && main.uctrl()==null ) { // Kill an empty default main; so it does not attempt to put a // "main" in any final ELF file main.setDef(1,XCTRL); // Delete default start input diff --git a/chapter22/src/main/java/com/seaofnodes/simple/node/cpus/riscv/ImmRISC.java b/chapter22/src/main/java/com/seaofnodes/simple/node/cpus/riscv/ImmRISC.java index 589bf550..9e7f456a 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/node/cpus/riscv/ImmRISC.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/node/cpus/riscv/ImmRISC.java @@ -40,7 +40,7 @@ abstract public class ImmRISC extends MachConcreteNode implements MachNode { @Override public void encoding( Encoding enc ) { short dst = enc.reg(this ); short src = enc.reg(in(1)); - enc.add4(riscv.i_type(opcode(), dst, func3(), src, _imm12)); + enc.add4(riscv.i_type(opcode(), dst, func3(), src, _imm12 & 0xFFF)); } // General form: "addi rd = rs1 + imm" |
