libera/#sicl - IRC Chatlog
Search
9:54:27
beach
Major progress. The bootstrapping procedure now finishes with generation of Cluster "assembly" turned on. There are still things to be defined for it to work at run time, and there is still at least one Cluster instruction missing, so I haven't turned on the Cluster assembly pass yet.
9:55:08
beach
I think we need a macro or a function for defining SICL simple functions where the body is Cluster instruction.
9:55:46
beach
Then we can use that operator for things like system calls and other stuff that requires access to registers and such.
10:02:03
beach
Since very little code will be written using such an operator, it can be very simple. They body can just be a list of Cluster commands.
10:30:50
beach
Also, generating Cluster assembly doesn't significantly increase bootstrapping time it seems.
12:37:44
beach
Actually, maybe a separate operator is not necessary, and it would in fact make some things harder. It is easy enough to create a list of Cluster commands and call Cluster to turn it into a byte vector. And creating a SICL simple function from that is just a matter of calling MAKE-INSTANCE. So by using just Common Lisp for it, we get a free "macro assembler" in that we can use Common Lisp loops and other abstractions to create the
14:27:16
beach
All the *<mumble>-commands* will then be appended and assembled in one go to a big vector. Individual functions will have entry points that refer to the start of the relevant system call in the vector.
14:33:32
beach
Or maybe I'll assemble them individually so that I can round the size up to a multiple of 8 and then concatenate the individual vectors to a big one.
14:34:35
beach
Or I can just keep individual vectors. The overhead of an array header might not make a big difference for the number of functions written this way.