Commit Graph

2754 Commits

Author SHA1 Message Date
rubydesign fea98979e8 Fix comparison bug
Unchanged high level test, ohh how great is testing
2020-03-22 14:31:43 +02:00
rubydesign f03f445652 passing values to macros
conceptually still a bit open, leaving the hack in for now
passing values to the macro instead of sol instances
2020-03-22 14:31:43 +02:00
rubydesign 6366ede8ee check for correct operator
was getting passed sol constants
2020-03-22 14:31:43 +02:00
rubydesign e4a79aac50 reset flags in interpreter
fix at least part of the problem why comparisons dont work
2020-03-22 14:31:43 +02:00
rubydesign 0ed5e74748 Fixing ripples from previous 2020-03-22 14:31:43 +02:00
rubydesign 3ce6ed5263 fix putstring and puts
using syscall regs
2020-03-22 14:31:43 +02:00
rubydesign 17a7f29b0c define and use syscall_XX registers
rather than use hardcoded r0 etc use syscall_X
change the syscalls and interpreter to use them
later use platform to map from syscall_X to actually used register (like r0 in arm)
2020-03-22 14:31:43 +02:00
rubydesign 3b50fee158 fix stray misc in slot 2020-03-22 14:31:43 +02:00
rubydesign 9f609bdb06 fix mod and tests 2020-03-22 14:31:43 +02:00
rubydesign 3a983b4fc8 fix plus, which inherited bugs from operator 2020-03-22 14:31:43 +02:00
rubydesign 7232c28ecd operator also fell into ssa trap
relying on register identity
in fact the whole operator concept was geared towards this, using 2 regs instead of one to avoid the whole issue
better now
2020-03-22 14:31:43 +02:00
rubydesign 3145547315 init fell into the ssa tap, fixed
reducing and assuming the same register, buuh
adds a transfer instruction that can hopefully be removed by analysis
2020-03-22 14:31:43 +02:00
rubydesign 5b0c1195e4 Fix interpreter and resolve method
Interpreter was not handling ssa correctly (ie overwriting)
Resolve was assuming wrong registers (also non ssa)
return value still broken
2020-03-22 14:31:43 +02:00
rubydesign 4db71c1c03 fix all uses of operators now they are ssa 2020-03-22 14:31:43 +02:00
rubydesign 0cde7c1d0a debugging to find operator not being ssa 2020-03-22 14:31:43 +02:00
rubydesign 61fc8a3991 make operator_instruction single ass
create result register automatically
usually not used, but register allocation will sort that
2020-03-22 14:31:43 +02:00
rubydesign 1378745907 first interpreter tests 2020-03-22 14:31:43 +02:00
rubydesign c16ed5ab3a fix interpreter
by currently not checking for old register pattern
feels like wip, but passes (all but one)
2020-03-22 14:31:43 +02:00
rubydesign f2250bc206 fix resolve and introduce method to chop strings to max
strings are 20 bytes. I want to implement the extension idea, just not now
2020-03-22 14:31:43 +02:00
rubydesign 407ca6ef72 misc test fixes 2020-03-22 14:31:43 +02:00
rubydesign 126466e9a9 fixing tests 2020-03-22 14:31:43 +02:00
rubydesign 504fc3509e fix set_internal_word register 2020-03-22 14:31:43 +02:00
rubydesign 5c13ea1433 fix naming mistakes fo Word.get/set macros 2020-03-22 14:31:43 +02:00
rubydesign d125a1528a Fix set_internal_byte registers 2020-03-22 14:31:43 +02:00
rubydesign 2656bfacb2 create a reduce_int on RegisterSlot
that just passes through to RegisterValue by calling to_reg
2020-03-22 14:31:43 +02:00
rubydesign 17a1121408 fix putstring registers 2020-03-22 14:31:43 +02:00
rubydesign 3a3a9277b3 fix operators registers 2020-03-22 14:31:43 +02:00
rubydesign 8867d60c13 fix method_missing register
logic is still wrong, even it is slightly less (at least loading the method name)
2020-03-22 14:31:43 +02:00
rubydesign ede103e73d finally did assert_function_call
for cleaner reading, like all other instruction asserts
2020-03-22 14:31:43 +02:00
rubydesign cf5a3c0102 fix inits registers
surprisingly easy. shorter code and more readable tests
2020-03-22 14:31:43 +02:00
rubydesign 7d8ef8ef64 fix allocate tests
as allocate got one smaller
2020-03-22 14:31:43 +02:00
rubydesign 8abcaa330b fix allocate in builder
which accessed unknown types.
also moved assert_allocate to support
2020-03-22 14:31:43 +02:00
rubydesign c9fedec230 add a way to bend the type for register_value
specifically for factories, where we know the type of next_object even it is not specified
2020-03-22 14:31:43 +02:00
rubydesign 8119030ed2 fix return sequence
broken due to logic error in register_slot << (which was reducing the wrong register, self, not the arg)

Still the sequence is in 2 places, one too many ?
2020-03-22 14:31:43 +02:00
rubydesign 05ddc70fd6 fix get_internal word register names
seems previous commits broke the return
2020-03-22 14:31:43 +02:00
rubydesign 6267bf3ad0 fix slot_to_reg to allow register indexes
we mostly use pre-calculated indexes, ie integers
but registers are allowed (in arm/risc), so we try to check the registers type at least is right.
The return is really a machine word, but we call it Object (yes, more work that way)
2020-03-22 14:31:43 +02:00
rubydesign 62d8d92b50 restrict list index to integer 2020-03-22 14:31:43 +02:00
rubydesign a70e510548 fix test_exit registers 2020-03-22 14:31:43 +02:00
rubydesign fb4fa598f2 fix get_internal_byte
improved operators and tests
some logic errors still
2020-03-22 14:31:43 +02:00
rubydesign a70f63e7bb fix remaining slot instruction tests 2020-03-22 14:31:43 +02:00
rubydesign 07873ce068 fix not same logic
caused by assert logic error, also fixed
2020-03-22 14:31:43 +02:00
rubydesign c1cfc12a1c converted resolve_method
Big, left till last, but surprisingly painless
2020-03-22 14:31:43 +02:00
rubydesign 12fe0b9a10 add constants automatically 2020-03-22 14:31:43 +02:00
rubydesign 28e9cd335a still fixing instruction tests 2020-03-22 14:31:43 +02:00
rubydesign e6729b8b60 fixing instruction tests 2020-03-22 14:31:43 +02:00
rubydesign 22d513d895 fix div4 and tests
also bug in reduce_int, compiler not carried through
2020-03-22 14:31:43 +02:00
rubydesign eed9ba082f Fix div10 and test
fix and use load_data (similar to load_constant)
and integrate into load_object when appropriate (ie for integers)
2020-03-22 14:31:43 +02:00
rubydesign bd02f69824 reduce_int was overwriting register
No more. But the type question is open, ie what type does the resulting register have
2020-03-22 14:31:43 +02:00
rubydesign 53eb28fff4 load constant to create register names with class
Just the id_ did give no clue to the contents, just took care of the uniqueness.
Better for debugging
2020-03-22 14:31:43 +02:00
rubydesign 3ec5557ddb fix builder logic error
and tests
2020-03-22 14:31:43 +02:00