Little Endian ordering is now ensured for stack based and register based operations e.g. PUSH now pushes datums in LE ordering onto the stack, POP pops data on the stack, converting from LE ordering to host ordering. More functions in the runtime are now macro defined, so there's less code while still maintaining the lookup table. -------------------------------------------------------------------------------- What LE ordering means for actual source code is that I utilise the convert_*_to_* functions for PUSH and POP. All other data oriented instructions are completely internal to the system and any data storage must be in Little Endian. So MOV, PUSH-REGISTER and DUP can all directly memcpy the data around the system without needing to consider endian at all. Macros were a necessity after I felt the redefinition of push for 4 different data types was too much. Most functions are essentially copies for each datatype. Lisp macros would make this so easy :(