start C compiler
This commit is contained in:
parent
262824b214
commit
5d6b490cce
7 changed files with 528 additions and 0 deletions
46
05/main.b
Normal file
46
05/main.b
Normal file
|
@ -0,0 +1,46 @@
|
|||
; add 24 + 16 = 40 to the stack pointer to put argc, argv in the right place
|
||||
byte 0x48
|
||||
byte 0x81
|
||||
byte 0xc4
|
||||
byte 40
|
||||
byte 0
|
||||
byte 0
|
||||
byte 0
|
||||
goto main
|
||||
|
||||
#include util.b
|
||||
#include constants.b
|
||||
#include preprocess.b
|
||||
|
||||
function main
|
||||
argument argv2
|
||||
argument argv1
|
||||
argument argv0
|
||||
argument argc
|
||||
local input_filename
|
||||
local output_filename
|
||||
|
||||
input_filename = .str_default_input_filename
|
||||
output_filename = .str_default_output_filename
|
||||
if argc == 1 goto have_filenames
|
||||
if argc != 3 goto usage_error
|
||||
input_filename = argv1
|
||||
output_filename = argv2
|
||||
:have_filenames
|
||||
split_into_preprocessing_tokens(input_filename)
|
||||
exit(0)
|
||||
|
||||
:usage_error
|
||||
fputs(2, .str_usage_error)
|
||||
exit(1)
|
||||
|
||||
:str_usage_error
|
||||
string Please either specify no arguments or an input and output file.
|
||||
|
||||
:str_default_input_filename
|
||||
string main.c
|
||||
byte 0
|
||||
|
||||
:str_default_output_filename
|
||||
string a.out
|
||||
byte 0
|
Loading…
Add table
Add a link
Reference in a new issue