Support preserved registers as identifiers
… in expressions
This commit is contained in:
181
boot/tokenizer.s
Normal file
181
boot/tokenizer.s
Normal file
@@ -0,0 +1,181 @@
|
||||
.global _tokenizer_initialize
|
||||
|
||||
.section .rodata
|
||||
|
||||
raw_classes:
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "space\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "digit\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "upper\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "lower\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
.ascii "invalid\n"
|
||||
|
||||
.section .bss
|
||||
.type class_names, @object
|
||||
.size class_names, 1024
|
||||
class_names: .zero 1024
|
||||
|
||||
.section .data
|
||||
.type classes, @object
|
||||
.size classes, 512 # 128 characters * 4 byte.
|
||||
classes:
|
||||
|
||||
.section .text
|
||||
|
||||
# Initializes the classification table.
|
||||
#
|
||||
# Paramaters:
|
||||
# a0 - Raw input for the classification table.
|
||||
.type _tokenizer_classes, @function
|
||||
_tokenizer_classes:
|
||||
# Prologue.
|
||||
addi sp, sp, -8
|
||||
sw ra, 4(sp)
|
||||
sw s0, 0(sp)
|
||||
addi s0, sp, 8
|
||||
|
||||
# Epilogue.
|
||||
lw ra, 4(sp)
|
||||
lw s0, 0(sp)
|
||||
addi sp, sp, 8
|
||||
ret
|
||||
|
||||
# Initializes the lookup tables.
|
||||
.type _tokenizer_initialize, @function
|
||||
_tokenizer_initialize:
|
||||
# Prologue.
|
||||
addi sp, sp, -8
|
||||
sw ra, 4(sp)
|
||||
sw s0, 0(sp)
|
||||
addi s0, sp, 8
|
||||
|
||||
la a0, raw_classes
|
||||
call _tokenizer_classes
|
||||
|
||||
# Epilogue.
|
||||
lw ra, 4(sp)
|
||||
lw s0, 0(sp)
|
||||
addi sp, sp, 8
|
||||
ret
|
Reference in New Issue
Block a user