From eee77999764131bd35ce2c471d32cd0b6e85f598 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Tue, 8 Oct 2019 20:41:09 -0400 Subject: Add write function assembly --- gen_code.c | 10 ++++++++++ pc.l | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/gen_code.c b/gen_code.c index bfef417..9f13a2d 100644 --- a/gen_code.c +++ b/gen_code.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "gen_code.h" #include "pc.h" @@ -128,6 +129,15 @@ ptree *t; } break; case PCALL: + if (!strcmp(t->l->attr.nval->name, "write")) { + GEN_EXPR(t->r); + fprintf(stdout, "mov %s, %%rsi\n", *reg_ptr); + fprintf(stdout, "leaq int_print(%%rip), %%rdi\n"); + fprintf(stdout, "mov $0, %%rax\n"); + fprintf(stdout, "call printf\n"); + } else if (!strcmp(t->l->attr.nval->name, "read")) { + fprintf(stderr,"Read\n"); + } fprintf(stderr, "PCALL\n"); break; case FCALL: diff --git a/pc.l b/pc.l index 553d495..eb8b4ea 100644 --- a/pc.l +++ b/pc.l @@ -43,6 +43,11 @@ output { tmp->func_info->argc = -1; tmp->func_info->argv = NULL; + fprintf(stdout, ".data\n"); + fprintf(stdout, "int_print:\n\t .asciz \"%%d\\n\"\n"); + fprintf(stdout, "float_print:\n\t .asciz \"%%f\\n\"\n.text\n"); + + return IO; } -- cgit v1.1