Assemble classes

This commit is contained in:
Andrew Morris
2022-05-27 14:31:07 +10:00
parent f19d1094b6
commit ddb52dbce5

View File

@@ -167,6 +167,8 @@ impl<'a> Assembler<'a> {
if c == 'f' {
self.assemble_function();
} else if c == 'c' {
self.assemble_class();
} else {
self.assemble_value();
}
@@ -445,6 +447,23 @@ impl<'a> Assembler<'a> {
self.fn_data.labels_map.resolve(&mut self.output);
}
fn assemble_class(&mut self) {
self.parse_exact("class(");
self.output.push(ValueType::Class as u8);
self.parse_optional_whitespace();
self.assemble_value();
self.parse_optional_whitespace();
self.parse_exact(",");
self.parse_optional_whitespace();
self.assemble_value();
self.parse_optional_whitespace();
self.parse_exact(")");
}
fn assemble_instruction(&mut self) {
let instr = self.parse_instruction_word();
@@ -897,6 +916,7 @@ enum ValueType {
Register = 0x0e,
External = 0x0f,
Builtin = 0x10,
Class = 0x11,
}
fn advance_chars(iter: &mut std::iter::Peekable<std::str::Chars>, len: usize) {