Torsten Ruger
ac5a7ac4ca
making parfait (both) use the new byte functions
2015-11-19 10:09:24 +02:00
Torsten Ruger
dffa3fbf42
adding word functions for byte access
2015-11-19 10:08:41 +02:00
Torsten Ruger
ff65952a3e
add get/set byte instructions
...
it seems all cpus have them anyway so best use them
it was a pain to do this on word level, hard to write, hard to debug and
quite unnecessarily slow
2015-11-19 10:07:27 +02:00
Torsten Ruger
5369dc3d52
rename get/set internal
...
to _word , because _byte versions are coming
2015-11-18 15:36:43 +02:00
Torsten Ruger
979660f282
move parfait into register
...
register layer uses parfait models to generate object space
so parfait should be part of register (not above it)
2015-11-18 12:04:25 +02:00
Torsten Ruger
2bc2d4486f
move interpreter to register
...
seems more where it belongs, since it interprets the register machine
instructions
2015-11-18 12:00:30 +02:00
Torsten Ruger
40d81681b5
move parfait adapter into parfait ruby
...
in the future parfait will be coded in some and translated back into
ruby to “adapt”
until then, all ruby code is the adapter
2015-11-18 11:55:29 +02:00
Torsten Ruger
303b7eb1f8
putstring unfolds length
...
which means sys call doesn’t need to
and also interpreter sometimes gets a symbol length
2015-11-16 18:03:29 +02:00
Torsten Ruger
f50d7b57a4
fix the putstring sys call indexing
...
index 0 is the marker word , so like in some, all indexes 1 based
works :-)
2015-11-15 22:03:06 +02:00
Torsten Ruger
8e82da0b61
fix arm (assembled) indexing
...
by having a dummy 0 index in salaam. when assembled
2015-11-15 20:42:07 +02:00
Torsten Ruger
9a2fe42167
change assembly order
...
first objects, then methods.
methods change length, so at least this way objects stay
did mean hacking the arm code (something for later)
2015-11-15 16:24:43 +02:00
Torsten Ruger
1633bf1289
fix position check
...
as programs get bigger the distance gets bigger
needs better approach
2015-11-15 00:38:23 +02:00
Torsten Ruger
9602acf3d2
fix label positions
2015-11-15 00:36:15 +02:00
Torsten Ruger
cea60f202a
small label changes
2015-11-15 00:35:43 +02:00
Torsten Ruger
cc9b515752
fix double label names
2015-11-14 22:53:01 +02:00
Torsten Ruger
278eccbed5
derive binary code form word
...
long ago hacked the binary code to use integers (thus forsaking correct
arm binaries)
Finally fix by deriving from Word which now has correct binary access
Dumped binary.name in the process, that is available from the method
2015-11-14 15:04:04 +02:00
Torsten Ruger
8fa92515b5
update arm and small arm fixes
...
constants in arm chunks, needs better solution
2015-11-14 13:05:49 +02:00
Torsten Ruger
dbcd39c277
helper do get the register no as int for arm
2015-11-14 00:22:23 +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
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
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
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
6c2ce66bfc
fix old warning
2015-11-10 11:48:53 +02:00
Torsten Ruger
9ab7b476d5
opal fix and minor
2015-11-09 23:27:15 +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
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
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
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
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
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
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
13d0747b45
test the log_level too
2015-11-05 14:05:12 +02:00
Torsten Ruger
ab2c73f42c
right name for return label makes interpreter work
2015-11-04 20:22:28 +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
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
834266e11e
improve label names a bit
2015-11-01 19:13:40 +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
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
Torsten Ruger
ef6cb2a069
use instruction steam from message
...
had been attached there last week, but was still used mainly through
the source (which i’m trying to remove)
2015-10-28 14:33:38 +02:00
Torsten Ruger
72b790c107
remove method source receiver
...
no harm done it seems
2015-10-28 14:24:14 +02:00
Torsten Ruger
e75517ff05
move constants to machine
2015-10-28 13:00:23 +02:00
Torsten Ruger
7e0778dc70
remove return_type
...
soon to be obsolete with multi returns
2015-10-28 12:19:10 +02:00
Torsten Ruger
79cf59c4e2
still finding index errors
2015-10-27 18:45:56 +02:00
Torsten Ruger
50029711ff
make frame and message indexed
...
also auto generate a replacement for previous offset class method (dry)
2015-10-27 16:04:36 +02:00
Torsten Ruger
624699f8ed
minor
2015-10-26 15:14:38 +02:00
Torsten Ruger
885aa765d6
still fixing index bugs
...
the indexed_length got written wrong
which is why the layout methods didn’t work
Now all indexes are 1 based, even fake men, where we just ignore 0
2015-10-26 14:33:36 +02:00
Torsten Ruger
9f4952b5ac
create behavior module
...
behavior handles instance methods (add/remove/find)
and shall be included in layout later too
2015-10-26 13:27:56 +02:00
Torsten Ruger
dc58dbe2fe
little clean
2015-10-26 13:02:08 +02:00
Torsten Ruger
4cadfc9ea9
shortening some methods, removing object prefix
2015-10-26 12:58:38 +02:00
Torsten Ruger
1a236aa50e
make binary code indexed (not derive from word)
...
still some work to be done there, as we should really have a byte buffer
2015-10-26 12:24:47 +02:00
Torsten Ruger
96f43dcfda
also giving word it's length
...
still hacked as char per word, but should be easy enough to fix when…
2015-10-26 12:23:52 +02:00
Torsten Ruger
df62b75c6f
adding an instance for the length of lists
2015-10-25 20:44:03 +02:00
Torsten Ruger
c1ee67038c
internally objects stop changing size
2015-10-25 20:43:13 +02:00
Torsten Ruger
60098257e9
use include so we can test with is_a
...
using the well documented included/extend trick
2015-10-25 19:16:12 +02:00
Torsten Ruger
0d001ec0fc
rename super_clsas to super_class_name
...
as it should have been
2015-10-25 15:32:38 +02:00
Torsten Ruger
f22eca053d
split create method
...
to allow class methods to use the other half
2015-10-25 15:04:40 +02:00
Torsten Ruger
7a690cd38d
fix to_s
2015-10-25 12:10:56 +02:00
Torsten Ruger
0921073025
remove last block occurrences
...
fixed.
2015-10-25 12:03:31 +02:00
Torsten Ruger
471329917b
most of the length and assembly stuff fixed
2015-10-25 10:54:19 +02:00
Torsten Ruger
405a6935d4
lots of stuff to move to linked lists
...
and remove the blocks
more position stuff coming, but the list part should be ok
2015-10-24 17:12:36 +03:00
Torsten Ruger
3774f8a5a2
use translator and remove passes
...
the only passes that were left were reg -> arm
those are almost completely one to one, so the idea of passes didn’t fit
2015-10-24 17:11:18 +03:00
Torsten Ruger
a871f96630
remove passes and achieve the same by translating
2015-10-24 11:42:36 +03:00
Torsten Ruger
57f37ec023
removed blocks and moved to labels
...
somewhat easier to understand the code as a linked list
relatively painless change, considering
2015-10-23 21:27:36 +03:00
Torsten Ruger
f1f56f0d4e
remove parfait module
...
which was only there because ruby has it
the concept is flawed and should be split into namespace and aspect
2015-10-23 15:20:02 +03:00
Torsten Ruger
6754518daf
prune builtin
...
will need much less, many more things can be expressed in soml
2015-10-23 15:13:05 +03:00
Torsten Ruger
897e11ce80
store three versions of the code in method
...
source, instructions and binary
2015-10-23 14:41:47 +03:00
Torsten Ruger
e0c5bc4c11
rename phisol to soml
2015-10-23 14:22:55 +03:00
Torsten Ruger
991cc0519f
create add_code helper and some cleaning
2015-10-23 14:08:12 +03:00
Torsten Ruger
dcbd3c7091
fold last of the virtual into register
2015-10-22 18:16:29 +03:00
Torsten Ruger
f658ecf425
bit of cleaning, updated readme
2015-10-22 17:38:49 +03:00
Torsten Ruger
1fd937927c
adjust branch names
...
IsXXX with xxx as condition, same as after if_xxx
AlwaysBranch is back to Branch
2015-10-19 16:08:00 +03:00
Torsten Ruger
50379a1fea
update to new syntax and patch tests
...
basic semantics remain, but have to improve test for new functionality
that has to be written for new branch types
2015-10-19 15:31:48 +03:00
Torsten Ruger
bdcd0f297d
first interpreted tests, fix branch issues
...
whole branch logic wobbly
better syntax needed, but working(ish) for now
2015-10-19 14:46:12 +03:00
Torsten Ruger
d767caf479
remove MethodCall and thus all virtual instructions
2015-10-18 19:27:46 +03:00
Torsten Ruger
8bf1337043
Remove MethodReturn instruction
...
and pass
and fix all tests
move towards removing all vm instructions
2015-10-18 17:32:32 +03:00
Torsten Ruger
6c7e4c0fe2
stop pinning self and frame
...
before: r0-message , r1-self , r2-frame , r3-new_message , r4 + tmps
now: r0-message , r1-new_message , r2 + tmps
programs got smaller, less fuss
also fix in return implementation that got the address from the wrong
message
2015-10-18 17:20:19 +03:00
Torsten Ruger
13eb017394
small to_s changes
2015-10-17 10:03:56 +03:00
Torsten Ruger
64a92fb9f4
remove dead code
...
was only used by now removed set instruction
2015-10-16 18:07:17 +03:00
Torsten Ruger
3a622efe9a
remove virtual new_frame instruction
...
resolved to one register instruction, not worth the hassle
2015-10-16 17:58:42 +03:00
Torsten Ruger
9ae850e3b2
remove unused set instruction
2015-10-16 17:45:24 +03:00