In C, I can do something like this (pardon my rusty x86/intel syntax):
int variable = 0xdeadbeef;
__asm {
ldw eax, $(variable) # load from variable
int 0x3 # trip interrupt.. maybe read from a IO port or something.
stw $(variable), $eax # get result, put into C variable
}
return variable;
This allows me to express certain things to the computer that are outside the range of expressibility of the language model.
What I would like to be able to do in Lisp is to execute the semantic equivalent of the above code fragment. I've considered hacking it into SBCL, but I have had higher priorities so far.
- ability to manually access memory
- ability to use assembly and translate said assembly into the high-level language
- ability to install interrupts
You probably also want the ability to precisely constrain the amount of memory a block of code uses.
I suppose there are other nice to haves as well: e.g., GC will need to be fairly controllable.
I see no practical reason why a Lisp can't be used to write an OS, but that Lisp will need a few extensions from the usual modern Lisp capabilities.