| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-08-15 11:10:40 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-08-15 11:10:40 +0200 |
| commit | 5e600685d284d223e7979e7ad760a2eb29a2e9d3 (patch) | |
| tree | 17995dd4b9628305ce362d11f26a8464c88ed20e /src/core | |
| parent | bfc060584e91398831dee85455e3df0fbbddbf57 (diff) | |
Sequences seem to work, but jump doesn't clean.
Diffstat (limited to 'src/core')
4 files changed, 68 insertions, 1 deletions
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java index 5607450..8c91206 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java @@ -17,6 +17,7 @@ import tonkadur.wyrd.v1.lang.meta.Instruction; import tonkadur.wyrd.v1.lang.computation.Address; import tonkadur.wyrd.v1.lang.computation.RelativeAddress; +import tonkadur.wyrd.v1.lang.computation.Operation; import tonkadur.wyrd.v1.lang.computation.Constant; import tonkadur.wyrd.v1.lang.computation.Cast; import tonkadur.wyrd.v1.lang.computation.ValueOf; @@ -201,7 +202,15 @@ public class RegisterManager new RelativeAddress ( pc_stack.get_address(), - new Cast(new Size(pc_stack.get_address()), Type.STRING), + new Cast + ( + Operation.minus + ( + new Size(pc_stack.get_address()), + Constant.ONE + ), + Type.STRING + ), Type.INT ); @@ -256,6 +265,16 @@ public class RegisterManager r = parameter_context.reserve(p.get_type()); + System.out.println + ( + "[D] Storing param (" + + p.get_type().toString() + + ") " + + r.get_name() + + " <- " + + p.toString() + ); + result.add(new SetValue(r.get_address(), p)); used_registers.add(r); @@ -284,6 +303,15 @@ public class RegisterManager r = parameter_context.reserve(p.get_type()); + System.out.println + ( + "[D] Reading param (" + + p.get_type().toString() + + ") " + + p.get_name() + + " <- " + + r.get_name() + ); result.add(new SetValue(p.get_address(), r.get_value())); used_registers.add(r); diff --git a/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java b/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java index d8316da..3af830c 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java @@ -38,4 +38,15 @@ public class MapType extends Type { return name; } + + @Override + public boolean equals (final Object o) + { + if (o instanceof MapType) + { + return ((MapType) o).member_type.equals(member_type); + } + + return false; + } } diff --git a/src/core/src/tonkadur/wyrd/v1/lang/type/PointerType.java b/src/core/src/tonkadur/wyrd/v1/lang/type/PointerType.java index ee34c0d..5f5e563 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/type/PointerType.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/type/PointerType.java @@ -23,4 +23,15 @@ public class PointerType extends Type { return name; } + + @Override + public boolean equals (final Object o) + { + if (o instanceof PointerType) + { + return ((PointerType) o).target_type.equals(target_type); + } + + return false; + } } diff --git a/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java b/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java index d2f5684..baa3bc3 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java @@ -37,4 +37,21 @@ public class Type { return name; } + + @Override + public int hashCode () + { + return toString().hashCode(); + } + + @Override + public boolean equals (final Object o) + { + if (o instanceof Type) + { + return ((Type) o).toString().equals(toString()); + } + + return false; + } } |


