From 7641aaeb6a59c45baa0d25d27b9e2c6c25e183b8 Mon Sep 17 00:00:00 2001 From: Marin Ivanov Date: Sat, 4 May 2024 03:01:57 +0300 Subject: add dummy type and size directives --- asm.peg | 7 +++++++ main.c | 4 ++++ minias.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/asm.peg b/asm.peg index bbc00f1..7d644b6 100644 --- a/asm.peg +++ b/asm.peg @@ -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}; } diff --git a/main.c b/main.c index 56df5b5..eeda181 100644 --- a/main.c +++ b/main.c @@ -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) diff --git a/minias.h b/minias.h index 3e4f225..451474a 100644 --- a/minias.h +++ b/minias.h @@ -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, -- cgit v1.2.3