Comments
Loading Dream Comments...
You must be logged in to write a comment - Log In
ArtistA beautiful purple-haired woman wearing a long purple velvet ankle-length dress with flouncy sleeves and purple suede high heels. She is wearing a pointed hat, like a witch's hat.
If a procedure is coded using {- .... -} braces, PARSER.COM emits 80x86 Assembler code instead of ILA code. This allows a degree of speed optimisation (at the risk of machine independence). The Specify operator (<::) then uses Integer ALU ops instead of BCD (binary-coded decimal), and variables are declared using the monadic ^ operator, such as ^RAX, ^EAX, ^AX, ^SI, ^DI, etc, representing the 80x86 CPU registers. (The dyadic ^ operator still represents exponentiation). Locals named with a leading ^ are stored as 64bit signed integers, for example :
Foo <:: {- (^Squee=32767, ^Yay=255); ^AX <:: 0; ..... -};
A special segment tag is applied to such procedures instead of the usual $F1 etc. indicating that these contain non-ILA code. 80x86 assembler mnemonics may be embedded in the procedures, again using ^, such as ^REP ^MOVSB, ^POPCNT, and so on. Incoming parameters are automatically converted from BCD to 64bit integers or unicode strings as required, by the use of the ^% (hat param) operator. Special rules may apply to the use of jump instructions, in particular intersegment jumps may be banned for security reasons (ILA does not implement "goto" or non-structured programming). Functions return an integer result in ^RAX, ^EAX, or ^DX:^AX which ILA may convert to a buf for normal use. PARSER.COM emits an actual binary stream so no external assembler (MASM, TASM, A86, etc) is required. Thus an entire ::SHE+ILA:: configuration may be Sysgenned from a ::SHE+ILA:: source code "file" piped into PARSER.COM, and written directly to segments on the dedicated datastore partition on the HDD.