diff options
| author | Baitinq <[email protected]> | 2025-04-08 00:26:45 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-04-08 00:26:45 +0200 |
| commit | b501094dc95934bc742acf4890ddf4729cf94a49 (patch) | |
| tree | 9805269c96c6562768fe27ddcd061d48854b7dfd | |
| parent | Examples: Add example creating array (diff) | |
| download | interpreter-b501094dc95934bc742acf4890ddf4729cf94a49.tar.gz interpreter-b501094dc95934bc742acf4890ddf4729cf94a49.tar.bz2 interpreter-b501094dc95934bc742acf4890ddf4729cf94a49.zip | |
Bootstrap: start bootstrapping implementation
| -rw-r--r-- | src/bootstrap/main.src | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/bootstrap/main.src b/src/bootstrap/main.src new file mode 100644 index 0000000..546fa4a --- /dev/null +++ b/src/bootstrap/main.src @@ -0,0 +1,34 @@ +extern printf = (*i8, varargs) => void; +extern fopen = (*i8, *i8) => *i8; +extern fgets = (*i8, i64, *i8) => void; +extern feof = (*i8) => bool; +extern fseek = (*i8, i64, i64) => i64; +extern ftell = (*i8) => i64; +extern fread = (*i8, i64, i64, *i8) => i64; +extern fclose = (*i8) => *i8; +extern malloc = (i64) => *i8; +extern free = (*i8) => void; + +let main = (argc: i64, argv: **i8) => i64 { + let filename = *(argv + 1); + + printf("%s\n", filename); + + let file = fopen("./src/bootstrap/main.src", "r"); + + fseek(file, 0, 2); + let file_size = ftell(file); + fseek(file, 0, 0); + + let buf = malloc(file_size + 1); + + let bytes_read = fread(buf, 1, file_size, file); + (*(buf + bytes_read)) = '\0'; + + printf("%s", buf); + + free(buf); + fclose(file); + + return 0; +}; |