Torsten Ruger
6eba363fb8
more speration
...
Separating vm and parfait
especially in method this is hairy, lots of ripples
bug is back in sod (i hope thats a good thing)
2015-05-20 17:11:13 +03:00
Torsten Ruger
d6d0f4f43a
split compiled_method into method and compiled_method_info
2015-05-20 16:43:26 +03:00
Torsten Ruger
dd2a5e367f
more docs and better read me
2015-05-20 13:50:56 +03:00
Torsten Ruger
d71547ea01
copy and other improvements for word
...
more tests reveal a bug (fixed) and more docs
2015-05-20 13:50:25 +03:00
Torsten Ruger
06cfba7c58
get sod to output lists and dicts
2015-05-20 10:57:20 +03:00
Torsten Ruger
8ec8a519ba
externalize boot process
...
Booting is complicated, make an own file for it
2015-05-19 20:29:33 +03:00
Torsten Ruger
4e3640e432
shift code from class to module
...
as class derives from module, module carries
much of the code that one thinks of as class
class only handles allocation really
2015-05-18 12:35:01 +03:00
Torsten Ruger
cfc2c474b2
test compatibility layer
...
test from and to std/parfait objects
for list and word for now
moved some of that code to virtual, out of parfait
2015-05-18 10:47:29 +03:00
Torsten Ruger
f7eb888c36
refactoring virtual parfait code
2015-05-18 10:21:23 +03:00
Torsten Ruger
d348e7afe7
more parfait ripples
...
changes due to previous changes in parfait api
2015-05-18 10:10:31 +03:00
Torsten Ruger
cff827ad42
final word fix
...
that does the parfait
2015-05-17 15:34:45 +03:00
Torsten Ruger
e70bfb9f7a
many minor parfait fixes
2015-05-17 15:34:29 +03:00
Torsten Ruger
3bdba119c8
fix the list after object fixes
...
start index at 1, but don’t overwrite layout,
so add one
2015-05-17 14:56:06 +03:00
Torsten Ruger
3b268df920
init with nil layout
...
making the default length 1 (the nil layout)
2015-05-17 14:55:10 +03:00
Torsten Ruger
701b0bc011
fix object grow
...
and write a test (and another one …)
2015-05-17 14:44:48 +03:00
Torsten Ruger
1114f06921
rename old layout()
...
new is called get_layout, but keep old around for
checking
2015-05-17 14:41:18 +03:00
Torsten Ruger
350d708fd3
introduce some constants
2015-05-17 14:40:02 +03:00
Torsten Ruger
8fa501fb91
fix object compiletime
...
and write some tests for it
2015-05-17 14:38:25 +03:00
Torsten Ruger
fe2be323d8
improve boot
...
also move to superclass not superclass_name in class
Makes ripples
2015-05-16 20:16:49 +03:00
Torsten Ruger
7085dee510
array to list conversion
...
start on layouts
2015-05-16 14:01:48 +03:00
Torsten Ruger
bee269f7a8
just renaming
2015-05-16 12:54:11 +03:00
Torsten Ruger
9376b8bc16
work on ObjectWriter
...
Back to the root! but lots of adjusting
ObjectWriter takes machine, machine has space
Virtual constants become Parfait::Objects etc
2015-05-16 12:53:10 +03:00
Torsten Ruger
9d8dc68bf4
fixing all tests
2015-05-15 21:11:44 +03:00
Torsten Ruger
f691ba1b20
using sof is_value
2015-05-15 21:11:29 +03:00
Torsten Ruger
a46dd9f6bf
more word tests
2015-05-15 20:31:43 +03:00
Torsten Ruger
0731a6061a
fix word implementation and tests
...
much better, though wasteful implementation
breaks a few tests, but ploughing on first
2015-05-15 16:45:36 +03:00
Torsten Ruger
164816c441
basic word functionality
...
and conversion from string
2015-05-14 20:39:12 +03:00
Torsten Ruger
5e0e8c8364
move index_of to list
...
and give it a sort of basic implementation
2015-05-14 19:54:38 +03:00
Torsten Ruger
c2b84925a4
basic functions for object
2015-05-14 19:53:56 +03:00
Torsten Ruger
9d711e7766
moving string to parfait
...
using parfait::word
also rename builtins string to word
2015-05-13 16:17:10 +03:00
Torsten Ruger
baca6eb4c6
rename string to word
2015-05-13 16:06:38 +03:00
Torsten Ruger
bf5576f805
small clean
2015-05-13 12:22:51 +03:00
Torsten Ruger
f92e5cf475
fix all tests again
2015-05-13 12:15:14 +03:00
Torsten Ruger
dd41758dea
renamed array and hash to list and dictionary
...
Since these are not the ruby classes, we don’t need
the old names. They are misleading.
An Array is a military term, we mean list
And a Hash is an implementation of a Dictionary,
or LookupTable
2015-05-12 19:10:45 +03:00
Torsten Ruger
a94ce51c58
also test array
...
minor (ahm) fixes to array logic
2015-05-12 19:03:14 +03:00
Torsten Ruger
398516a596
fixes parfaits hash by implementing array
...
basic concept holds up as parfaits hash is now
working on parfaits own array
2015-05-12 18:52:01 +03:00
Torsten Ruger
b980def84e
move space to parfait
...
Also make the machine the singleton
and space hang off it
Many repercussions, not all fixed in this commit
2015-05-12 15:36:44 +03:00
Torsten Ruger
2e8b514e9c
start to use parfait classes
...
bit of a bumpy road
2015-05-12 14:58:29 +03:00
Torsten Ruger
73a6a5db39
move meta and boot class to parfait
...
just cosmetic, fixed requires but not code
2015-05-12 09:54:36 +03:00
Torsten Ruger
b804354236
fix requires and some scoping
2015-05-12 09:44:34 +03:00
Torsten Ruger
ab870e3323
moved the whole parfait into its namespace/module
2015-05-11 18:55:49 +03:00
Torsten Ruger
a552e3fbce
remove virtual frame (just using parfait)
2015-05-10 17:12:43 +03:00
Torsten Ruger
d41676fdfd
namespace cleanup
...
remove unnecessary Virtual namespace prefix
which was a large motivation for the move
2015-05-08 15:19:30 +03:00
Torsten Ruger
de8fe46fe0
move compiler into virtual
...
and associated changes in code, requires tests etc
2015-05-08 15:10:30 +03:00
Torsten Ruger
a1b9acce3d
basic name expression code
...
needs fleshing out and tests
2015-05-08 14:57:11 +03:00
Torsten Ruger
c700a3aabe
better compiler docs
2015-05-08 14:55:01 +03:00
Torsten Ruger
6f2affaf36
fix name expression and test
...
plus various cleaning and rename off call_site
2015-05-08 14:34:46 +03:00
Torsten Ruger
2fde50c27a
some more tests fixed
2015-05-06 15:15:53 +03:00
Torsten Ruger
9bf5eb2621
somewhat correct that message at compile-time idea
2015-05-06 15:15:33 +03:00
Torsten Ruger
8a7db6d4f2
remove message as third arg to compile
2015-05-06 15:14:47 +03:00
Torsten Ruger
1feed6af44
create one file per instruction
2015-05-06 08:55:14 +03:00
Torsten Ruger
4f1508ca61
moved slots to own directory
2015-05-06 08:38:29 +03:00
Torsten Ruger
cdea4915f9
bit more cleanup after compiler
2015-05-05 15:11:09 +03:00
Torsten Ruger
001af3f8b6
reviving more tests
2015-05-05 14:04:37 +03:00
Torsten Ruger
e4c799ecb6
first tests comping through after ast/compile change
2015-05-04 23:03:52 +03:00
Torsten Ruger
ff22c17784
move ast to compiler
...
new compile module does just that: compile
Dispatch with visitor pattern
no more patching into ast
2015-05-04 14:22:22 +03:00
Torsten Ruger
92bbd70c77
move builtin to register, where it belongs
2015-05-04 11:12:31 +03:00
Torsten Ruger
3659cb4b81
make the tests run (and pass) again
2015-05-04 11:10:40 +03:00
Torsten Ruger
8180c67d48
move sof to own repo
2015-05-03 20:38:13 +03:00
Torsten Ruger
618b8d05f8
adding ruby method lists
...
Just for reference (not to copy)
2015-04-15 11:39:12 +03:00
Torsten Ruger
5792fb983b
add module
...
between class and object, as in ruby
2015-04-15 11:38:46 +03:00
Torsten Ruger
c14bacd171
fix inheritance
2015-04-10 14:02:28 +03:00
Torsten Ruger
aaf6da8808
make object derivation explicit
...
in parfait
2015-04-08 20:33:15 +03:00
Torsten Ruger
81e3a98af8
add integer to parfait
2015-04-08 20:32:56 +03:00
Torsten Ruger
fdb3fbc825
Parfait documentation
...
outline of expanded parfait, documented but not coded
2015-04-08 20:24:50 +03:00
Torsten Ruger
4f1e99d744
adding stubs for coming classes
2015-04-06 11:38:11 +03:00
Torsten Ruger
f8fe074af2
change arg to arg_names
...
and a bit of clean up
2015-03-28 20:20:01 +02:00
Torsten Ruger
c0dcf6feb0
add todo comment
2015-03-28 12:29:17 +02:00
Torsten Ruger
e881a5f2ee
separate frames and messages
...
also not using context which was not defined anyway
2015-03-28 12:25:04 +02:00
Torsten Ruger
0c08c335e5
fix the conditional parfait
2015-03-25 18:30:47 +02:00
Torsten Ruger
aee36d9f5f
bit of line wrapping
2015-03-25 17:29:39 +02:00
Torsten Ruger
d758a23eb6
correct parfait module
...
parfait only needs to be in a module when it is used in the vm, not
when it is parsed.
The parsed parfait must be without namespace.
2015-03-25 17:16:20 +02:00
Torsten Ruger
6e6dd257e4
rename
2014-10-18 13:53:01 +03:00
Torsten Ruger
f09a70a65b
correctly jumping to __init and then calling main
2014-10-07 15:35:13 +03:00
Torsten Ruger
30a982be0e
better debug fo the booting parts
2014-10-07 15:34:43 +03:00
Torsten Ruger
c10ef20622
was issuing wrong instruction
2014-10-07 12:23:59 +03:00
Torsten Ruger
9ac165c34c
some checks
2014-10-07 12:23:27 +03:00
Torsten Ruger
cae99f217c
just make sre we really ret registers (some constants were flying about)
2014-10-07 12:23:08 +03:00
Torsten Ruger
e1b29d799a
limit to_s length
2014-10-07 12:21:40 +03:00
Torsten Ruger
b7164b354d
better solution for initial jump
2014-10-07 12:01:33 +03:00
Torsten Ruger
5c90ad83e0
add initial jump instruction
2014-10-06 19:57:44 +03:00
Torsten Ruger
e1aa3fd843
implement the vm call logic
2014-10-05 18:40:47 +03:00
Torsten Ruger
dbbcc738c4
remove walue which was eold
2014-10-05 01:18:11 +03:00
Torsten Ruger
965e5f2a0f
minor
2014-10-05 01:13:57 +03:00
Torsten Ruger
a99e2602ae
introduce method call that includes setup
2014-10-05 01:13:43 +03:00
Torsten Ruger
486580aeb2
fix bad scoping bug
2014-10-05 01:12:44 +03:00
Torsten Ruger
d38097aea4
fixing pass order by require order (easier to track)
2014-10-05 01:12:16 +03:00
Torsten Ruger
8f0fb7e4e2
correct function call to method call (includes vm setup)
2014-10-05 01:10:10 +03:00
Torsten Ruger
3aca3cc33d
making good headway with register machine implementation in arm
2014-10-05 01:05:18 +03:00
Torsten Ruger
7968cadaf9
remove singleton in arm machine and use class methods
2014-10-04 17:34:51 +03:00
Torsten Ruger
d7d2622d7f
use register instructions
2014-10-04 17:22:23 +03:00
Torsten Ruger
9939c6afa0
fix imports and name issues
2014-10-04 12:52:47 +03:00
Torsten Ruger
4f7fefb0ab
using new register instructions
2014-10-04 12:52:28 +03:00
Torsten Ruger
e3c3840bc6
a creative moment, making up instructions
2014-10-04 12:51:08 +03:00
Torsten Ruger
f77d3ea7eb
move to virtual as it leaves vm instructions
2014-10-04 12:50:28 +03:00
Torsten Ruger
c5655b1059
a long string of import order and namespace issues which is not over yet
2014-10-03 14:52:47 +03:00
Torsten Ruger
1347a85eb7
fixing import order
2014-10-03 14:33:06 +03:00
Torsten Ruger
a083c03b1d
move function call instruction to register level and the pass to arm
2014-10-03 14:32:54 +03:00
Torsten Ruger
1af66567fb
fixed the SetImplementation with new register instructions
2014-10-03 11:07:18 +03:00
Torsten Ruger
38a286942e
move the hash access stuff to arm, not sure if needed at all
2014-10-03 11:05:17 +03:00
Torsten Ruger
220d9f6213
moving instrctions into own folders and arm machine out of the way
2014-10-03 10:25:10 +03:00
Torsten Ruger
ad73e320b0
moved unsued code out of the way
2014-10-02 22:34:58 +03:00
Torsten Ruger
277dddeb6a
time was up for the Bassembler
2014-10-02 22:33:09 +03:00
Torsten Ruger
1be71918a5
move all arm instructions to own folder and fold inheritance
2014-10-02 22:28:34 +03:00
Torsten Ruger
9923eb0b07
move passes to own dir
2014-10-02 16:11:45 +03:00
Torsten Ruger
cc08016a0f
fix the logic of move, but really there is a deeper issue (we'd have to add to get pc relative addressing for constants)
2014-10-02 16:08:24 +03:00
Torsten Ruger
0e3e11a699
add more debug (string values)
2014-10-02 16:06:05 +03:00
Torsten Ruger
493b02674c
remove some boiler
2014-09-30 12:08:12 +03:00
Torsten Ruger
fba66371c0
(semi) proper fix for large moves, integers or virtual constants(was buggy)
2014-09-30 12:07:21 +03:00
Torsten Ruger
527e591e75
fix add instruction and test
2014-09-29 21:04:38 +03:00
Torsten Ruger
7d52e71f5c
found and implemented the movw, but not for pi :-(
2014-09-29 20:26:55 +03:00
Torsten Ruger
d8710de590
fix frame more
2014-09-28 11:18:24 +03:00
Torsten Ruger
5a17bf3396
more headway on the (new) frame implementation
2014-09-27 14:59:16 +03:00
Torsten Ruger
2ce17ed5ff
fold messages and frames to save an instance in bootspace
2014-09-25 20:31:21 +03:00
Torsten Ruger
efe39292ae
extract position as module to be included
2014-09-25 20:30:02 +03:00
Torsten Ruger
6c7004688b
bit of namespace cleanup
2014-09-25 20:29:05 +03:00
Torsten Ruger
4d07113429
add register reference where symbols are allowed
2014-09-25 20:28:40 +03:00
Torsten Ruger
df9d6284ae
up to, ut not including, creating frames
2014-09-24 18:25:18 +03:00
Torsten Ruger
363fe5e35f
scaffold for NewMessage and Frame
2014-09-24 18:15:08 +03:00
Torsten Ruger
31ee3a62fe
rename __send__ for now
2014-09-24 18:14:23 +03:00
Torsten Ruger
892f251d18
implement how send should work (but parfait doesn't parse yet, so it doesnt)
2014-09-23 20:16:05 +03:00
Torsten Ruger
f5ec7f3bdb
fixed
2014-09-23 19:23:52 +03:00
Torsten Ruger
c5765d4255
improve return implementation
2014-09-23 19:20:55 +03:00
Torsten Ruger
4e01bc798f
add NewMessage / Frame instructions (without actual implementation)
2014-09-23 19:06:10 +03:00
Torsten Ruger
3d5eb685a1
more constants for slots
2014-09-20 17:06:11 +03:00
Torsten Ruger
21177bd7ce
add a list of symbols to boot space
2014-09-19 19:11:30 +03:00
Torsten Ruger
457b40a7de
fix api and implement the big constant move
2014-09-18 17:05:59 +03:00
Torsten Ruger
c32ca84861
clean
2014-09-18 17:05:22 +03:00
Torsten Ruger
f80df69262
clean
2014-09-18 17:04:54 +03:00
Torsten Ruger
49b6b99ab9
more work on large moves, including the notion of linking again
2014-09-17 17:00:19 +03:00
Torsten Ruger
4af93493fb
class code went
2014-09-17 16:32:21 +03:00
Torsten Ruger
e7f7f9c319
move fits_u8 to integer constant (from numberic)
2014-09-17 16:23:29 +03:00
Torsten Ruger
95c7e44342
at least it assembles again
2014-09-17 12:11:34 +03:00
Torsten Ruger
e4474e7e2c
rename length to mem_length and suffer the consequences
2014-09-17 12:04:54 +03:00
Torsten Ruger
79e42003b2
collect all add functions at bottom (rename too)
2014-09-16 18:50:44 +03:00
Torsten Ruger
8b8a8eea56
rename code.length tp mem_length with lots of noise impact
2014-09-16 17:16:56 +03:00
Torsten Ruger
cffa7f1953
small function naming adjustments
2014-09-16 17:16:13 +03:00
Torsten Ruger
db01529b67
eol warning
2014-09-16 17:15:17 +03:00
Torsten Ruger
45977ecc01
move assembly from visitor into objects, part one
2014-09-16 16:06:56 +03:00
Torsten Ruger
bbcfef3c43
make a little more real
2014-09-16 16:05:38 +03:00
Torsten Ruger
dd8e46fd1c
move length here
2014-09-16 16:05:08 +03:00
Torsten Ruger
56facae658
eol signal
2014-09-16 16:04:53 +03:00
Torsten Ruger
16b3cacc8d
work to move large constants
2014-09-16 11:39:08 +03:00
Torsten Ruger
c92b165a3f
carry constants through in reference slots. resolve functions with it
2014-09-15 12:08:37 +03:00
Torsten Ruger
bdd4a3d6ad
just checking which part of unimplemented i hit
2014-09-14 21:26:30 +03:00
Torsten Ruger
c51dbf51e1
renamed true,false,nil class to constant (from value)
2014-09-14 18:15:33 +03:00
Torsten Ruger
6b85054958
better, correcter use of return storage
2014-09-14 18:14:57 +03:00
Torsten Ruger
b29de4600e
use slot constants
2014-09-11 21:30:40 +03:00
Torsten Ruger
b7e0d3fba4
more on set
2014-09-11 21:26:22 +03:00
Torsten Ruger
1d33c03537
corrected method enter and return and created those missing constants
2014-09-11 19:00:14 +03:00
Torsten Ruger
771eeb7a3d
fix block positions for debug
2014-09-11 15:19:29 +03:00
Torsten Ruger
98a88ec10e
change to module style like other modules in this dir
2014-09-11 15:08:56 +03:00
Torsten Ruger
3d66ffcc17
start on __init__
2014-09-11 15:01:50 +03:00
Torsten Ruger
cb727c658e
add inital jump to __init__
2014-09-11 10:30:23 +03:00
Torsten Ruger
f44965ef21
fix padding bug
2014-09-10 21:43:05 +03:00
Torsten Ruger
e53de8ad43
fixup names in builtin module
2014-09-10 21:35:52 +03:00
Torsten Ruger
5a5e977b8f
get some old builtin code backonline and improve imports
2014-09-09 18:03:13 +03:00
Torsten Ruger
61e80d4f28
had to boot_classes outside constructor (unfortunately) because of recursion
2014-09-09 17:51:34 +03:00
Torsten Ruger
7036a87678
fix the address for calls to jump past the method object header
2014-09-09 17:36:33 +03:00
Torsten Ruger
e3fdbb30a5
remove relative positions. have to fix them up somehow
2014-09-09 17:29:24 +03:00
Torsten Ruger
97bfd77038
implements the type word
2014-09-09 13:28:07 +03:00
Torsten Ruger
8040829501
moves link slot positions to bytes (from words). easier maths and better for later
2014-09-07 17:31:40 +03:00
Torsten Ruger
f00b06bb44
move to relative (to self) addressing
2014-09-06 23:03:33 +03:00
Torsten Ruger
c6072c683b
oops, less said the better
2014-09-06 22:48:58 +03:00
Torsten Ruger
64a433fd15
move the 2 to pad_to (from each call)
2014-09-06 22:38:32 +03:00
Torsten Ruger
bfa3f28e97
fix assembly (at least lositions and padding)
2014-09-06 19:48:56 +03:00
Torsten Ruger
197ecd576e
debugging assembly
2014-09-05 20:56:05 +03:00
Torsten Ruger
d94ec6c72c
fix parfait test
2014-09-04 14:22:28 +03:00
Torsten Ruger
5bb03f2d8b
unscoping block names and adding labels to objects (which are off)
2014-08-30 20:55:22 +03:00
Torsten Ruger
ccb5b37a3c
reinserted arm for now, until dependecy is cleaned up. fixed tests
2014-08-30 19:40:37 +03:00
Torsten Ruger
050a8ada9f
fix position handling
2014-08-30 17:08:30 +03:00
Torsten Ruger
6d67c03cc9
make block replace take array or single instruction
2014-08-30 16:57:56 +03:00
Torsten Ruger
48b33e5f9d
add position to instruction (for relative calculations)
2014-08-30 16:57:34 +03:00
Torsten Ruger
18f33770b5
fix and use object writer in test
2014-08-30 14:17:00 +03:00
Torsten Ruger
b5c39b2749
minor debug remove
2014-08-30 14:16:41 +03:00
Torsten Ruger
726a514c9e
fix assembler recursion
2014-08-30 14:01:22 +03:00
Torsten Ruger
50af6a8f41
lots of rework on assembly. constant object for layouts, hash implementation.
2014-08-30 13:48:52 +03:00
Torsten Ruger
d33077c2b1
reworking method and block assembly for new aproach
2014-08-30 13:47:51 +03:00
Torsten Ruger
90e5b4584a
rework link into two phase
2014-08-29 21:00:25 +03:00
Torsten Ruger
cec339890c
fold the linker back into assembler. too easy to get the link and assemble functions out off sync
2014-08-29 17:20:59 +03:00
Torsten Ruger
3ed1e814ec
more towards correct assembly
2014-08-29 15:49:59 +03:00
Torsten Ruger
99b4468599
fix spelling
2014-08-28 22:32:53 +03:00
Torsten Ruger
35b738639b
improve readmes
2014-08-28 19:12:46 +03:00
Torsten Ruger
1fc3f1fb18
renaming ripples
2014-08-28 18:53:48 +03:00
Torsten Ruger
09698ec70a
moved to consitent md ending
2014-08-28 18:52:55 +03:00
Torsten Ruger
b8a74f4a77
renamed the kernel dir/ module to Builtin (so to not confuse with ruby kernel module)
2014-08-28 18:27:04 +03:00
Torsten Ruger
8c1c72f1c3
remove that all include file
2014-08-28 16:44:27 +03:00
Torsten Ruger
9dd37a74df
add a kenrnel array class with function stubs
2014-08-28 16:39:35 +03:00
Torsten Ruger
da3cd69a5c
fixed the old list tests for hash, and fixed hash to pass them
2014-08-28 16:28:25 +03:00
Torsten Ruger
d3c4087871
use simple array based hash, so assembly of it will be easy
2014-08-28 16:20:09 +03:00
Torsten Ruger
0bc0506c5a
small fix for str len
2014-08-28 16:19:43 +03:00
Torsten Ruger
c7bc18dac8
small fix for str len
2014-08-28 16:19:30 +03:00
Torsten Ruger
fb42cb16f0
move get implementation to virtual as it should not result in register action
2014-08-28 08:43:38 +03:00
Torsten Ruger
41de2b5822
moved boot_class back to virtual (as things get clearer)
2014-08-28 08:24:37 +03:00
Torsten Ruger
7d35732923
renamed method definition to compiled method
2014-08-28 08:10:33 +03:00
Torsten Ruger
e09d3c2f65
adding legth of object itself
2014-08-28 08:08:11 +03:00
Torsten Ruger
a71f55f661
moved all link functions to a (da da) linker class
2014-08-27 21:44:23 +03:00
Torsten Ruger
aad3f7ca15
equivalent transformation, just looks
2014-08-27 17:23:50 +03:00
Torsten Ruger
fc9615a649
short hash, inline like for array. with curly braces off course
2014-08-27 14:46:34 +03:00
Torsten Ruger
6343e644b4
prepare for short hash, but no change yet
2014-08-27 14:42:41 +03:00