mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 14:54:07 +10:00
String literals are being parsed, compiled and printed, read more
Strings, due to their potentially large size, are stored outside of a routine's code section, in the data section. To access the correct string, you must read the jump index, then the real address from the jump table - and extra layer of indirection will result in more flexible data down the road, I hope. Other changes include: * Added string concat operator .. * Added TOY_STRING_MAX_LENGTH * Strings can't be created or concatenated longer than the max length * The parser will display a warning if the bucket is too small for a string at max length, but it will continue * Added TOY_BUCKET_IDEAL to correspend with max string length * The bucket now allocates an address that is 4-byte aligned * Fixed missing entries in the parser rule table * Corrected some failing TOY_BITNESS tests
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "toy_common.h"
|
||||
|
||||
#include "toy_stack.h"
|
||||
#include "toy_bucket.h"
|
||||
|
||||
typedef struct Toy_VM {
|
||||
//hold the raw bytecode
|
||||
@@ -12,10 +13,10 @@ typedef struct Toy_VM {
|
||||
unsigned char* routine;
|
||||
unsigned int routineSize;
|
||||
|
||||
unsigned int paramCount;
|
||||
unsigned int jumpsCount;
|
||||
unsigned int dataCount;
|
||||
unsigned int subsCount;
|
||||
unsigned int paramSize;
|
||||
unsigned int jumpsSize;
|
||||
unsigned int dataSize;
|
||||
unsigned int subsSize;
|
||||
|
||||
unsigned int paramAddr;
|
||||
unsigned int codeAddr;
|
||||
@@ -30,6 +31,9 @@ typedef struct Toy_VM {
|
||||
|
||||
//stack - immediate-level values only
|
||||
Toy_Stack* stack;
|
||||
|
||||
//easy access to memory
|
||||
Toy_Bucket* stringBucket;
|
||||
} Toy_VM;
|
||||
|
||||
TOY_API void Toy_bindVM(Toy_VM* vm, unsigned char* bytecode); //process the version data
|
||||
|
||||
Reference in New Issue
Block a user