Commit Graph

2254 Commits

Author SHA1 Message Date
Torsten 94b9b95141 rewrote insert, a bit more than anticipated 2020-03-28 21:26:58 +02:00
Torsten a758d610d6 Merge branch 'master' of github.com:ruby-x/rubyx 2020-03-28 19:50:26 +02:00
Torsten e8111c259b fix last tests that required faked returns 2020-03-28 19:46:07 +02:00
Deepi Garg a04c27e1b0
Merge branch 'master' into master 2020-03-28 22:55:24 +05:30
Deepi Garg aae168fe13
Update word.rb 2020-03-28 22:49:34 +05:30
Deepi Garg 065361bfdc
Update word.rb 2020-03-28 22:45:52 +05:30
Torsten a3effe29f6 adding integer compare tests and fixing returns
true, false and nll were not handled correctly as returns
returns assume int, and reduce. The solution (hack?) is to add fake numbers into true,false and nil that get returned from from the arm syscall
(and it works!, which means i can fix other tests now)
2020-03-28 18:41:59 +02:00
Torsten 8dfcc0f5de add decent method to get the programs return to interpreter
only had such methods in tests, but they really belong in code
also adding fake values to true ,false and nil
2020-03-28 18:39:49 +02:00
chhavikirtani2000 4f8a5f2a78 removed temp 2020-03-28 18:24:59 +02:00
chhavikirtani2000 055a4d622b removed comments 2020-03-28 18:24:59 +02:00
chhavikirtani2000 5bef23d6e1 review comments incorporated 2020-03-28 18:24:59 +02:00
chhavikirtani2000 2e3b614c92 review comments incorporated 2020-03-28 18:24:59 +02:00
chhavikirtani2000 fa28475b71 review comments incorporated 2020-03-28 18:24:59 +02:00
chhavikirtani2000 c477e90c45 implemented start_with along with tests 2020-03-28 18:24:59 +02:00
Deepi Garg 5804a6a74d
Added insert function 2020-03-28 20:03:19 +05:30
Torsten 06944142d6 moving more tests to arm
and guess what, finding bugs (index ones)
not fixed though
2020-03-27 20:18:14 +02:00
Torsten 4bae5c418b fix register use in putstring
was off by one, the syscall is write 
and the first arg is file_descriptor
ie 1 == stdout
2020-03-26 11:24:56 +02:00
Torsten 231ce0f69b improve debug labels 2020-03-26 11:24:33 +02:00
Torsten 7572e27869 fix operator register usage
which makes inter math work
surprise!
2020-03-25 18:38:32 +02:00
Torsten bc558d1f0d do not copy name of method
so that the resolve can compare name identity
which is what is does, not equality
this (and some other bug) is crashing arm currently
2020-03-25 12:43:57 +02:00
Torsten b2dce92883 fix arm return bug
even had a fixme on it
2020-03-24 22:04:44 +02:00
Torsten 90935bfbbc risc is GREEN
totally, man.
Small fix in method missing fixed last block tests
(why, i do not know)
2020-03-22 15:58:19 +02:00
Torsten 37feba1239 bunch of side effects fixed
makes one think if those are valid asserts
2020-03-22 15:56:57 +02:00
Torsten ddd1f4e296 fix interpreter syscall and rename return reg
returned int for puts was same name as implicit return  int
2020-03-22 14:31:43 +02:00
Torsten be684c0c43 move message to stack_pointer
changing a bunch of register names
some of which get names now
2020-03-22 14:31:43 +02:00
Torsten a93a3c8af5 fix most interpreter tests 2020-03-22 14:31:43 +02:00
Torsten 06ade75593 Fix non ssa issue
register instances were being shared across instructions
causing the setting to have side-effects
Fixed this by copying the register on write
(fixing the symptom rather than the cause, i'll make an issue)
2020-03-22 14:31:43 +02:00
Torsten d2e7c647d0 setting registers in the allocator
unfortunately the reg instances are spread across instructions
this causes problems when setting them
2020-03-22 14:31:43 +02:00
Torsten c890e8402b change in register_names protocol
move to returning the attribute names
getting and setting can then be automated in the base class
2020-03-22 14:31:43 +02:00
Torsten 0137056b89 change platform to return register names
not just the number of them
also adds protocol to map registers
(like message to r0 , or syscalls)
2020-03-22 14:31:43 +02:00
Torsten f13e6dcf57 fix releasing in allocator
fell into hash new trap, which reuses the object you give it. not good for mutable objects like the array.
also previous logic was broken in terms of machine vs ssa names
2020-03-22 14:31:43 +02:00
Torsten 3f131a4018 start with register assigning
have to find a way to set them next
2020-03-22 14:31:43 +02:00
Torsten 4f290ee246 basic liveliness for allocator 2020-03-22 14:31:43 +02:00
Torsten d0b734c57c adding register_names to instruction protocol 2020-03-22 14:31:43 +02:00
Torsten 8df1b8126f add register names to allocator
make platform instantiate it
basic plumbing
2020-03-22 14:31:43 +02:00
Torsten 500df01425 rename allocator to standard_allocator
planning to have platform dish it out
2020-03-22 14:31:43 +02:00
Torsten 2e109a16dc starting on risc allocation
inserting allocator stage in method translation
2020-03-22 14:31:43 +02:00
Torsten d5411c7727 Last risc fixes that are not binary, move binary tests
move test that translate or create binary to own directory, 
for semantic distance (they are the only ones still failing)
2020-03-22 14:31:43 +02:00
Torsten fea98979e8 Fix comparison bug
Unchanged high level test, ohh how great is testing
2020-03-22 14:31:43 +02:00
Torsten 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
Torsten 6366ede8ee check for correct operator
was getting passed sol constants
2020-03-22 14:31:43 +02:00
Torsten e4a79aac50 reset flags in interpreter
fix at least part of the problem why comparisons dont work
2020-03-22 14:31:43 +02:00
Torsten 0ed5e74748 Fixing ripples from previous 2020-03-22 14:31:43 +02:00
Torsten 3ce6ed5263 fix putstring and puts
using syscall regs
2020-03-22 14:31:43 +02:00
Torsten 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
Torsten 3b50fee158 fix stray misc in slot 2020-03-22 14:31:43 +02:00
Torsten 9f609bdb06 fix mod and tests 2020-03-22 14:31:43 +02:00
Torsten 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
Torsten 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
Torsten 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