diff options
| -rw-r--r-- | asm.peg | 7 | ||||
| -rw-r--r-- | main.c | 4 | ||||
| -rw-r--r-- | minias.h | 2 |
3 files changed, 13 insertions, 0 deletions
@@ -41,6 +41,10 @@ directive = { $$ = fd; } | sd:section-directive { $$ = sd; } + | type-directive + { $$.kind = ASM_DIR_TYPE; } + | size-directive + { $$.kind = ASM_DIR_SIZE; } fill-directive = "fill" ws r:number ws? "," ws? s:number ws? "," ws? v:number @@ -62,6 +66,9 @@ section-type = "@nobits" { $$.i64 = SHT_NOBITS; } | "@progbits" { $$.i64 = SHT_PROGBITS; } +type-directive = "type" ws ident "," ws "@function" +size-directive = "size" ws ident "," ws ".-" ident + label = i:ident ':' { $$.label = (Label){.kind = ASM_LABEL, .name = i.charptr}; } @@ -810,6 +810,10 @@ assemble(void) sym = getsym(v->set.sym); sym->value = v->set.value; break; + case ASM_DIR_TYPE: + break; + case ASM_DIR_SIZE: + break; case ASM_LABEL: sym = getsym(v->label.name); if (sym->defined) @@ -68,6 +68,8 @@ typedef enum { ASM_DIR_INT, ASM_DIR_QUAD, ASM_DIR_BALIGN, + ASM_DIR_TYPE, + ASM_DIR_SIZE, // Instructions. ASM_JMP, ASM_INSTR, |
