From c9cd55d1732719896e796a1b1ae85d3877faa9ec Mon Sep 17 00:00:00 2001 From: Kakadu Date: Thu, 27 Feb 2025 22:52:02 +0300 Subject: [PATCH] Use malloc from Signed-off-by: Kakadu --- byterun/byterun.c | 80 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/byterun/byterun.c b/byterun/byterun.c index fea6e65c5..5269b313b 100644 --- a/byterun/byterun.c +++ b/byterun/byterun.c @@ -3,7 +3,7 @@ # include # include # include -# include +# include # include "../runtime/runtime.h" void *__start_custom_data; @@ -18,7 +18,7 @@ typedef struct { int stringtab_size; /* The size (in bytes) of the string table */ int global_area_size; /* The size (in words) of global area */ int public_symbols_number; /* The number of public symbols */ - char buffer[0]; + char buffer[0]; } bytefile; /* Gets a string from a string table by an index */ @@ -45,7 +45,7 @@ bytefile* read_file (char *fname) { if (f == 0) { failure ("%s\n", strerror (errno)); } - + if (fseek (f, 0, SEEK_END) == -1) { failure ("%s\n", strerror (errno)); } @@ -55,31 +55,31 @@ bytefile* read_file (char *fname) { if (file == 0) { failure ("*** FAILURE: unable to allocate memory.\n"); } - + rewind (f); if (size != fread (&file->stringtab_size, 1, size, f)) { failure ("%s\n", strerror (errno)); } - + fclose (f); - + file->string_ptr = &file->buffer [file->public_symbols_number * 2 * sizeof(int)]; file->public_ptr = (int*) file->buffer; file->code_ptr = &file->string_ptr [file->stringtab_size]; file->global_ptr = (int*) malloc (file->global_area_size * sizeof (int)); - + return file; } /* Disassembles the bytecode pool */ void disassemble (FILE *f, bytefile *bf) { - + # define INT (ip += sizeof (int), *(int*)(ip - sizeof (int))) # define BYTE *ip++ # define STRING get_string (bf, INT) # define FAIL failure ("ERROR: invalid opcode %d-%d\n", h, l) - + char *ip = bf->code_ptr; char *ops [] = {"+", "-", "*", "/", "%", "<", "<=", ">", ">=", "==", "!=", "&&", "!!"}; char *pats[] = {"=str", "#string", "#array", "#sexp", "#ref", "#val", "#fun"}; @@ -90,59 +90,59 @@ void disassemble (FILE *f, bytefile *bf) { l = x & 0x0F; fprintf (f, "0x%.8x:\t", ip-bf->code_ptr-1); - + switch (h) { case 15: goto stop; - + /* BINOP */ case 0: fprintf (f, "BINOP\t%s", ops[l-1]); break; - + case 1: switch (l) { case 0: fprintf (f, "CONST\t%d", INT); break; - + case 1: fprintf (f, "STRING\t%s", STRING); break; - + case 2: fprintf (f, "SEXP\t%s ", STRING); fprintf (f, "%d", INT); break; - + case 3: fprintf (f, "STI"); break; - + case 4: fprintf (f, "STA"); break; - + case 5: fprintf (f, "JMP\t0x%.8x", INT); break; - + case 6: fprintf (f, "END"); break; - + case 7: fprintf (f, "RET"); break; - + case 8: fprintf (f, "DROP"); break; - + case 9: fprintf (f, "DUP"); break; - + case 10: fprintf (f, "SWAP"); break; @@ -150,12 +150,12 @@ void disassemble (FILE *f, bytefile *bf) { case 11: fprintf (f, "ELEM"); break; - + default: FAIL; } break; - + case 2: case 3: case 4: @@ -168,27 +168,27 @@ void disassemble (FILE *f, bytefile *bf) { default: FAIL; } break; - + case 5: switch (l) { case 0: fprintf (f, "CJMPz\t0x%.8x", INT); break; - + case 1: fprintf (f, "CJMPnz\t0x%.8x", INT); break; - + case 2: fprintf (f, "BEGIN\t%d ", INT); fprintf (f, "%d", INT); break; - + case 3: fprintf (f, "CBEGIN\t%d ", INT); fprintf (f, "%d", INT); break; - + case 4: fprintf (f, "CLOSURE\t0x%.8x", INT); {int n = INT; @@ -203,30 +203,30 @@ void disassemble (FILE *f, bytefile *bf) { } }; break; - + case 5: fprintf (f, "CALLC\t%d", INT); break; - + case 6: fprintf (f, "CALL\t0x%.8x ", INT); fprintf (f, "%d", INT); break; - + case 7: fprintf (f, "TAG\t%s ", STRING); fprintf (f, "%d", INT); break; - + case 8: fprintf (f, "ARRAY\t%d", INT); break; - + case 9: fprintf (f, "FAIL\t%d", INT); fprintf (f, "%d", INT); break; - + case 10: fprintf (f, "LINE\t%d", INT); break; @@ -235,7 +235,7 @@ void disassemble (FILE *f, bytefile *bf) { FAIL; } break; - + case 6: fprintf (f, "PATT\t%s", pats[l]); break; @@ -245,7 +245,7 @@ void disassemble (FILE *f, bytefile *bf) { case 0: fprintf (f, "CALL\tLread"); break; - + case 1: fprintf (f, "CALL\tLwrite"); break; @@ -267,7 +267,7 @@ void disassemble (FILE *f, bytefile *bf) { } } break; - + default: FAIL; } @@ -281,13 +281,13 @@ void disassemble (FILE *f, bytefile *bf) { /* Dumps the contents of the file */ void dump_file (FILE *f, bytefile *bf) { int i; - + fprintf (f, "String table size : %d\n", bf->stringtab_size); fprintf (f, "Global area size : %d\n", bf->global_area_size); fprintf (f, "Number of public symbols: %d\n", bf->public_symbols_number); fprintf (f, "Public symbols :\n"); - for (i=0; i < bf->public_symbols_number; i++) + for (i=0; i < bf->public_symbols_number; i++) fprintf (f, " 0x%.8x: %s\n", get_public_offset (bf, i), get_public_name (bf, i)); fprintf (f, "Code:\n");