On Monday 08 February 2010 11:12:50 pm Mariano Martinez Peck wrote:
Hi folks. Disusing with a friend, he asked me if Squeak was completely written in itself (actually, SLANG). I think (I am not sure) that some parts of the VM as Interpreter, ObjectMemory, and most primitives are written in SLANG and then using VMMaker I can convert from that to C. Ok.....but...I think I heard that there are primitives that are directly written in C (not SLANG, no translation). Is this true ?
Yes. Slang is like lex or yacc and primitives are like API bindings. Each plugin has two layers coded in C - the top layer has a regular pattern and is usually generated automatically from Slang and the bottom layer which is hand- coded. The main program is also a platform-specific layer and is hand-coded.
If true, how can be that addressed ? where is the C code of that? because, I take VMMaker, I convert to C, then compile, install and I have a working VM.
The code generated by VMMaker from Slang is just a library. The platform team hand-codes the main program, platform support code and the build scripts. For instance, the unix source tree has: /platforms/Cross/ - platform independent support code (hand-coded) /platforms/unix/ - unix specific VM and plugin code (hand-coded) /platforms/unix/src/ - VM interpreter library and plugins (Slang-coded) /platforms/unix/cmake/ - build scripts
The build scripts for the VM and its plugins merge the code from Cross/ unix/ and unix/src to build the complete VM and its plugins.
So...that C code must come somewhere...where is it ? how can I know if a primitive is written in SLANG or directly in C?
The first line of a generated file will contain information about the Slang source code and the VM used to generate this file.
HTH .. Subbu