Commit Graph
100 Commits
Author SHA1 Message Date
Torsten Ruger 6f0d6d831e update arm and implement most operators
multiplication wasn’t implemented
and division isn’t part if arm
neither is rotate by register
2015-11-12 20:02:14 +02:00
Torsten Ruger 787f727974 simplify i to_s 2015-11-11 20:45:40 +02:00
Torsten Ruger 6137833140 change args argument to create method to be hash
was array and didn’t carry types and names
2015-11-11 20:41:02 +02:00
Torsten Ruger 351a747bfd mod and div for int 2015-11-11 20:36:40 +02:00
Torsten Ruger 1e7935bf85 implement byte access for some word
wouldn’t have been possible without the ruby version
2015-11-11 20:36:07 +02:00
Torsten Ruger 9bfc9cf6c2 implementing missing operators 2015-11-11 20:34:49 +02:00
Torsten Ruger d870553a1f make ruby word byte size
was hacked as int
interestingly zero change to tests
2015-11-11 19:11:08 +02:00
Torsten Ruger 93ff44bb6f improve reinit of interpreter 2015-11-10 19:28:31 +02:00
Torsten Ruger 1efa36ed4f string sometimes gets to_s in equal while half cooked
during debugger register change or update to be precise.
without the debugger there would be no access to the word
at that point and no need for this hack
2015-11-10 19:16:38 +02:00
Torsten Ruger 8528fae785 add the new tests 2015-11-10 19:12:50 +02:00
Torsten Ruger daffa0579e another opal hack
in opal 13 / 10 = 1.3 whereas in ruby its 1
2015-11-10 19:10:11 +02:00
Torsten Ruger c92814440f fix integer to_s and put, with tests 2015-11-10 19:09:17 +02:00
Torsten Ruger 760a4beb86 fix some word with tests 2015-11-10 19:08:48 +02:00
Torsten Ruger 6c2ce66bfc fix old warning 2015-11-10 11:48:53 +02:00
Torsten Ruger da9dacffb2 shorten fibo test a bit 2015-11-10 11:44:55 +02:00
Torsten Ruger a730dd0c99 fix some, return missing
must write no return error code
2015-11-09 23:29:35 +02:00
Torsten Ruger 70f912f94c allow message as keyword to access current message
the ultimate in meta-programming
2015-11-09 23:29:14 +02:00
Torsten Ruger a20f1570ee temporary word hack to make it look liked indexed 2015-11-09 23:28:40 +02:00
Torsten Ruger 5d80c38c87 correct register types 2015-11-09 23:28:10 +02:00
Torsten Ruger 9ab7b476d5 opal fix and minor 2015-11-09 23:27:15 +02:00
Torsten Ruger 368263d5a5 rewrite of field access using on_name
much cleaner and revealed a bug
2015-11-09 23:26:37 +02:00
Torsten Ruger dd7973875c fix interpreter to handle registers in set 2015-11-09 23:25:34 +02:00
Torsten Ruger 9075f1af37 fixes yet another order dependant bug in the test (not the code) 2015-11-09 10:04:37 +02:00
Torsten Ruger b2de1c6d79 minor fixes 2015-11-08 23:58:54 +02:00
Torsten Ruger f746218765 reinstate word creation and use for strings
so string constants become words, so we can fiddle with them
2015-11-08 23:58:35 +02:00
Torsten Ruger c8fa5238ee stdout word too 2015-11-08 23:57:38 +02:00
Torsten Ruger 6b9c472bec refactor load_parfait
so debugger can grab and wire it easily
2015-11-08 18:35:10 +02:00
Torsten Ruger 6f69995284 stab at inter to string
wip
2015-11-08 17:11:03 +02:00
Torsten Ruger c38775e933 add set_internal
and the set_slot with register
very much like the get_slot for get_internal
2015-11-08 17:10:36 +02:00
Torsten Ruger ede7639861 forgot to link tests in
so code climate complained, oh now
2015-11-08 17:09:28 +02:00
Torsten Ruger 64d99d5e68 didn't need big decimal require 2015-11-08 15:18:39 +02:00
Torsten Ruger d6108e7b3a fix interpreter overflow issue
flag set for bigness, result reduced
tests for + and *
fixed fibs tests
2015-11-08 15:15:55 +02:00
Torsten Ruger 6ea698d397 save some to_s code 2015-11-08 14:30:42 +02:00
Torsten Ruger cf05e7553a rework interpreter test framework
remove lots of copy paste
2015-11-08 14:30:28 +02:00
Torsten Ruger 37564d9c2e implement message pseudo variable (like self)
too easy
also simplified some tests
2015-11-08 13:55:38 +02:00
Torsten Ruger 69918c8e88 add some message and remove fields
those fields are already present in the classes
(in the future they should be defined in some and integrated to ruby,
but that would mean parsing to boot and parsing doesn’t yet work on
opal)
2015-11-08 13:54:58 +02:00
Torsten Ruger 502cfa357d implement and test field access 2015-11-08 13:39:13 +02:00
Torsten Ruger b443103ea4 using class fields
instead of internal_get
2015-11-08 01:02:47 +02:00
Torsten Ruger 6cd95ee933 more layout tests, seeing class names on stdout 2015-11-08 00:55:37 +02:00
Torsten Ruger 9fd7c79cfb mixed up class and meta, fixed 2015-11-08 00:55:10 +02:00
Torsten Ruger bcc366f8fd bit more soml 2015-11-08 00:54:47 +02:00
Torsten Ruger 3e4dcd35c7 better no method no super handling
also revealed bug in booting
2015-11-08 00:54:24 +02:00
Torsten Ruger ab7e517e9e slightly tighter parfait tests 2015-11-07 22:26:06 +02:00
Torsten Ruger f11e8f0a13 fix all the test
many are off course affected by call sequence changes
2015-11-07 22:20:21 +02:00
Torsten Ruger 5ddc96718b slight call logic modification
simplification, new model is such that the upon start the method:
has a message in r0, works on it and returns to the return address.

Everything else is up to the caller
2015-11-07 21:59:39 +02:00
Torsten Ruger f2c7ed827d simplify the __init
admittedly more source code, but half the runtime
mainly just using message (not new)
made possible by call sequence change
2015-11-07 21:58:19 +02:00
Torsten Ruger 2315ad6920 minor cleaning 2015-11-07 21:55:04 +02:00
Torsten Ruger 8c68ffc7a4 fixing indexes makes test work
forgot my own rule: all parfait works in 1 based lists
2015-11-07 20:10:55 +02:00
Torsten Ruger a1aa6b58ac resolve methods, don't just get them
i.e. down the ladder we go
2015-11-07 19:39:15 +02:00
Torsten Ruger 7523bac80a add layout and class accessor and test 2015-11-07 19:38:52 +02:00
Torsten Ruger 484e2d19d4 allow for registers in get slot 2015-11-07 19:38:03 +02:00
Torsten Ruger 1d07c1fb95 fix super class with name mixup 2015-11-07 19:37:38 +02:00
Torsten Ruger 37928b8591 rename internal get/set functions
mainly because the salaam parser chokes on internal…
2015-11-07 17:40:59 +02:00
Torsten Ruger 8aabff6b37 get layout test
start of copying the ruby parfait tests
lots can be done with string output and return value
2015-11-07 17:39:17 +02:00
Torsten Ruger 50b03a5e94 load parfait soml files
No dir glob for precise order
2015-11-07 17:38:27 +02:00
Torsten Ruger d878ce00d8 framework for parfait runtime testing
with interpreter for now
later with arm exec support
2015-11-07 17:37:41 +02:00
Torsten Ruger 708cdace17 implement indexed object access
one of the few functions that can’t be coded
(or the design specifically is such that it can’t, in c it would be
self[index],
or, worse *(self + index) )
2015-11-07 17:36:28 +02:00
Torsten Ruger 35afe88ede allow get_slot with two registers
before was register and number, but for runtime that doesn’t work
2015-11-07 17:34:41 +02:00
Torsten Ruger c9c0f66d79 rename test/parfait
to then write parfait test on the runtime
2015-11-07 14:04:38 +02:00
Torsten Ruger 9ebe28450b add global variable space
could in the long run move spaces functionality to the class
and since the class is global anyway, wouldn’t need this
2015-11-07 12:19:04 +02:00
Torsten Ruger b1939e9828 rename helper 2015-11-07 12:18:08 +02:00
Torsten Ruger fd7e4afb2f small meta related changes 2015-11-07 00:14:10 +02:00
Torsten Ruger 42c404802d more class function testing 2015-11-07 00:13:57 +02:00
Torsten Ruger 46e1a112ab metaclass moves down to object 2015-11-07 00:12:17 +02:00
Torsten Ruger 204200b92a metaclass is back
this time with a real purpose and implementation as the intermediary
As the interface to the layout and for replacing an edited layout
2015-11-07 00:11:56 +02:00
Torsten Ruger ebcc15d314 testing fibo 2015-11-06 14:24:57 +02:00
Torsten Ruger eae5cac4b5 check returns on tests 2015-11-05 17:00:41 +02:00
Torsten Ruger 4eb3d9029a use logger 2015-11-05 16:50:00 +02:00
Torsten Ruger 13d0747b45 test the log_level too 2015-11-05 14:05:12 +02:00
Torsten Ruger 1309ea37de fibonacci while works just as well now
surprisingly much faster though,
2015-11-05 13:37:08 +02:00
Torsten Ruger aad50021fe more messages for recursive fibs 2015-11-05 12:23:11 +02:00
Torsten Ruger 4014ad27fe fix and test return
return was in the wrong message
better tests now
2015-11-05 12:22:48 +02:00
Torsten Ruger ff759bf0c1 increase message size
message size is somewhat like stack size,
but 1-1 related to how deep it can be, now 50 calls
2015-11-05 12:12:15 +02:00
Torsten Ruger 8310bc4985 fix while tests now that while is fixed 2015-11-04 20:28:02 +02:00
Torsten Ruger 32275f4d48 fix interpreter test 2015-11-04 20:27:48 +02:00
Torsten Ruger 642dcb065a fix while statement
logic was broken, or inversed
had to lay the code out a bit funny, but it works and makes sense
2015-11-04 20:23:26 +02:00
Torsten Ruger ab2c73f42c right name for return label makes interpreter work 2015-11-04 20:22:28 +02:00
Torsten Ruger 691ae96d71 fix names of branch codes
also store objects in register, avoid the whole object_id thing which
just lead to unclarity about class
2015-11-04 20:22:03 +02:00
Torsten Ruger 428faad25f opal fix for indexes 2015-11-04 16:11:25 +02:00
Torsten Ruger b5e733cd11 finally simple logging
instead of commenting puts
2015-11-04 11:48:51 +02:00
Torsten Ruger 9519196a98 update arm 2015-11-04 10:35:30 +02:00
Torsten Ruger 2236065d02 position filling after the padding changes, works again 2015-11-04 10:34:58 +02:00
Torsten Ruger c87682b77f fix padding
used to be that type and layout were hidden
now type is gone and layout is an explicit instance, so 0 overhead
2015-11-04 10:34:03 +02:00
Torsten Ruger 5bddbfbb62 rename word_length to padded length
with word_length i was never sure if it was the padded version or not
2015-11-04 10:33:10 +02:00
Torsten Ruger 6ada815735 first stab at fixing the assembly
lots of length fiddling
wip
2015-11-03 16:24:12 +02:00
Torsten Ruger 0f8f0a681c fix padding to only consider layout (1 word) 2015-11-03 16:22:50 +02:00
Torsten Ruger ca1dc36e3d method marking for labels 2015-11-03 16:22:24 +02:00
Torsten Ruger 6882f39645 fixing lengths 2015-11-03 16:21:50 +02:00
Torsten Ruger c15445a958 let labels be constants 2015-11-03 16:20:25 +02:00
Torsten Ruger 14f8b42015 fix instruction order, now with the save
and finally formatted in statements too
2015-11-03 11:25:02 +02:00
Torsten Ruger dae12c532c fix fragment tests
they mostly got longer due to the added store instruction + label
2015-11-03 11:23:58 +02:00
Torsten Ruger 5a8d7d313f little more tests 2015-11-03 11:23:15 +02:00
Torsten Ruger c940e25f91 other half of previous call change 2015-11-03 11:22:52 +02:00
Torsten Ruger 1be5d1862f need to collect labels for return
so the interpreter can find the object
2015-11-03 11:22:26 +02:00
Torsten Ruger bc414fd3e8 function call now saves the return address before calling
that means SaveReturn is obsolete (breaks loads of tests)
first step towards multi - return which obviously can not have the
callee save return address.
In fact this would make FunctionCall redundant too, as it is really
just a branch
2015-11-03 11:20:49 +02:00
Torsten Ruger cffbc91821 fix field_def to new syntax 2015-11-02 21:27:37 +02:00
Torsten Ruger 03979156db fix statements
as they go
2015-11-02 20:12:01 +02:00
Torsten Ruger 7eebc775d6 let helper output correct version in case of error 2015-11-02 20:11:40 +02:00
Torsten Ruger 45bd4bfdc6 remove save return 2015-11-02 20:11:12 +02:00
Torsten Ruger ddb1df7362 start to fix the link issue
that came from removing SaveReturn
2015-11-02 20:10:48 +02:00