Commit Graph

2216 Commits

Author SHA1 Message Date
4871a52d37 better error reporting for parser 2015-11-19 10:10:13 +02:00
249f43ad34 translate and interpret new instructions 2015-11-19 10:09:55 +02:00
ac5a7ac4ca making parfait (both) use the new byte functions 2015-11-19 10:09:24 +02:00
dffa3fbf42 adding word functions for byte access 2015-11-19 10:08:41 +02:00
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
5369dc3d52 rename get/set internal
to _word , because _byte versions are coming
2015-11-18 15:36:43 +02:00
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
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
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
0643b96641 update arm
and small code changes from the fact that just loading a variable does
not change status flags
2015-11-17 02:28:47 +02:00
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
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
8e82da0b61 fix arm (assembled) indexing
by having a dummy 0 index in salaam. when assembled
2015-11-15 20:42:07 +02:00
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
458610b970 implement string length 2015-11-15 11:28:16 +02:00
1633bf1289 fix position check
as programs get bigger the distance gets bigger
needs better approach
2015-11-15 00:38:23 +02:00
9602acf3d2 fix label positions 2015-11-15 00:36:15 +02:00
cea60f202a small label changes 2015-11-15 00:35:43 +02:00
b30cf21bbd fix arm indexes
needs rethought
fixed for static use, but what about dynamic
2015-11-15 00:35:12 +02:00
cc9b515752 fix double label names 2015-11-14 22:53:01 +02:00
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
8fa92515b5 update arm and small arm fixes
constants in arm chunks, needs better solution
2015-11-14 13:05:49 +02:00
dbcd39c277 helper do get the register no as int for arm 2015-11-14 00:22:23 +02:00
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
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
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
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
f779b5d15f fix interpreter to simulate 32 bit machine 2015-11-13 20:31:35 +02:00
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
a5afca10f6 don't pass machine around, its global 2015-11-12 20:02:44 +02:00
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
787f727974 simplify i to_s 2015-11-11 20:45:40 +02:00
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
351a747bfd mod and div for int 2015-11-11 20:36:40 +02:00
1e7935bf85 implement byte access for some word
wouldn’t have been possible without the ruby version
2015-11-11 20:36:07 +02:00
9bfc9cf6c2 implementing missing operators 2015-11-11 20:34:49 +02:00
d870553a1f make ruby word byte size
was hacked as int
interestingly zero change to tests
2015-11-11 19:11:08 +02:00
93ff44bb6f improve reinit of interpreter 2015-11-10 19:28:31 +02:00
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
daffa0579e another opal hack
in opal 13 / 10 = 1.3 whereas in ruby its 1
2015-11-10 19:10:11 +02:00
c92814440f fix integer to_s and put, with tests 2015-11-10 19:09:17 +02:00
760a4beb86 fix some word with tests 2015-11-10 19:08:48 +02:00
6c2ce66bfc fix old warning 2015-11-10 11:48:53 +02:00
a730dd0c99 fix some, return missing
must write no return error code
2015-11-09 23:29:35 +02:00
70f912f94c allow message as keyword to access current message
the ultimate in meta-programming
2015-11-09 23:29:14 +02:00
a20f1570ee temporary word hack to make it look liked indexed 2015-11-09 23:28:40 +02:00
5d80c38c87 correct register types 2015-11-09 23:28:10 +02:00
9ab7b476d5 opal fix and minor 2015-11-09 23:27:15 +02:00
368263d5a5 rewrite of field access using on_name
much cleaner and revealed a bug
2015-11-09 23:26:37 +02:00
dd7973875c fix interpreter to handle registers in set 2015-11-09 23:25:34 +02:00