Torsten Ruger
dbcd39c277
helper do get the register no as int for arm
2015-11-14 00:22:23 +02:00
Torsten Ruger
6e7c6d814a
long const avoidance
...
arm can only load 10 bits and some funny logic
so for now avoid big fffffff const
2015-11-14 00:21:24 +02:00
Torsten Ruger
6127d92ca9
implement arm branches
...
which backfired into interpreter as
plus actually means 0 or plus in arm
may still change back but for now
2015-11-14 00:20:03 +02:00
Torsten Ruger
9ab3de234d
some helper functions
...
for when i started the assembler div10
in the end i did the div10 in some, so no need
2015-11-13 20:47:08 +02:00
Torsten Ruger
4a8bb32039
serious bit fiddling, div10 using shift magic
...
forgot that arm has no division (or respectively only later models have)
many magic formulae out there, none seem to work 1000% on the
interpreter. some big 0 ending numbers are 1 off.
2015-11-13 20:46:27 +02:00
Torsten Ruger
f779b5d15f
fix interpreter to simulate 32 bit machine
2015-11-13 20:31:35 +02:00
Torsten Ruger
5c862111b9
remove div and add div10
...
general division is for another day, the 10 version is manageable
also same code produces mod10
wip
2015-11-12 20:03:57 +02:00
Torsten Ruger
a5afca10f6
don't pass machine around, its global
2015-11-12 20:02:44 +02:00
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
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
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
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
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
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
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
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
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
fd7e4afb2f
small meta related changes
2015-11-07 00:14:10 +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
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
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
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
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
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
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
Torsten Ruger
86b0030f15
refactor on_call
2015-11-02 17:32:21 +02:00
Torsten Ruger
834266e11e
improve label names a bit
2015-11-01 19:13:40 +02:00
Torsten Ruger
d3a7809746
use . to mark methods
2015-10-30 00:01:28 +02:00
Torsten Ruger
7e24f63327
polish sources
2015-10-29 22:31:28 +02:00
Torsten Ruger
7d7b7ca995
adding types to layout
...
so we can test assignment
2015-10-29 12:45:29 +02:00
Torsten Ruger
e4201143b3
last fixes from source change
2015-10-28 21:40:48 +02:00
Torsten Ruger
e6743c7216
(string) source knockoffs
2015-10-28 21:39:59 +02:00
Torsten Ruger
c426f4a6d5
some of the sources methods belonged to method really
2015-10-28 21:38:52 +02:00
Torsten Ruger
bdb4a40f9c
only string and ast allowed as source
2015-10-28 21:38:23 +02:00
Torsten Ruger
191be8d2f6
use compiler to generate methods and their instructions
2015-10-28 21:37:42 +02:00
Torsten Ruger
99a695907c
move method_source functionality into compiler
...
the source was there long before the compiler (sis language) came along
and was basically doing the same
Much clearer concept with using compiler to generate methods and code
Also move compile method to method
2015-10-28 21:36:41 +02:00
Torsten Ruger
c245272e52
don't export current
2015-10-28 14:37:40 +02:00