aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--asm/base.cpp32
-rw-r--r--asm/base.hpp20
-rw-r--r--asm/main.cpp19
4 files changed, 54 insertions, 19 deletions
diff --git a/Makefile b/Makefile
index 609fc40..83dc4dc 100644
--- a/Makefile
+++ b/Makefile
@@ -35,7 +35,7 @@ VM_OUT=$(DIST)/ovm.out
## ASSEMBLY setup
ASM_DIST=$(DIST)/asm
ASM_SRC=asm
-ASM_CODE:=$(addprefix $(ASM_SRC)/, lexer.cpp, preprocesser.cpp)
+ASM_CODE:=$(addprefix $(ASM_SRC)/, base.cpp lexer.cpp preprocesser.cpp)
ASM_OBJECTS:=$(ASM_CODE:$(ASM_SRC)/%.cpp=$(ASM_DIST)/%.o)
ASM_DEPS:=$(ASM_OBJECTS:%.o=%.d) $(ASM_DIST)/main.d
ASM_CFLAGS=$(CPPFLAGS)
diff --git a/asm/base.cpp b/asm/base.cpp
new file mode 100644
index 0000000..d2812f1
--- /dev/null
+++ b/asm/base.cpp
@@ -0,0 +1,32 @@
+/* Copyright (C) 2024 Aryadev Chavali
+
+ * You may distribute and modify this code under the terms of the GPLv2
+ * license. You should have received a copy of the GPLv2 license with
+ * this file. If not, please write to: aryadev@aryadevchavali.com.
+
+ * Created: 2024-04-14
+ * Author: Aryadev Chavali
+ * Description:
+ */
+
+#include "./base.hpp"
+
+#include <cstdio>
+
+std::optional<std::string> read_file(const char *filename)
+{
+ FILE *fp = fopen(filename, "rb");
+ if (fp)
+ {
+ std::string contents;
+ fseek(fp, 0, SEEK_END);
+ contents.resize(ftell(fp));
+ rewind(fp);
+ fread(&contents[0], 1, contents.size(), fp);
+ fclose(fp);
+
+ return contents;
+ }
+ else
+ return std::nullopt;
+}
diff --git a/asm/base.hpp b/asm/base.hpp
new file mode 100644
index 0000000..b956028
--- /dev/null
+++ b/asm/base.hpp
@@ -0,0 +1,20 @@
+/* Copyright (C) 2024 Aryadev Chavali
+
+ * You may distribute and modify this code under the terms of the GPLv2
+ * license. You should have received a copy of the GPLv2 license with
+ * this file. If not, please write to: aryadev@aryadevchavali.com.
+
+ * Created: 2024-04-14
+ * Author: Aryadev Chavali
+ * Description: Base library
+ */
+
+#ifndef BASE_HPP
+#define BASE_HPP
+
+#include <optional>
+#include <string>
+
+std::optional<std::string> read_file(const char *);
+
+#endif
diff --git a/asm/main.cpp b/asm/main.cpp
index 51600cb..be26426 100644
--- a/asm/main.cpp
+++ b/asm/main.cpp
@@ -20,28 +20,11 @@
#include <lib/inst.h>
+#include "./base.hpp"
#include "./lexer.hpp"
using std::pair, std::string, std::string_view, std::vector;
-std::optional<string> read_file(const char *filename)
-{
- FILE *fp = fopen(filename, "rb");
- if (fp)
- {
- string contents;
- fseek(fp, 0, SEEK_END);
- contents.resize(ftell(fp));
- rewind(fp);
- fread(&contents[0], 1, contents.size(), fp);
- fclose(fp);
-
- return contents;
- }
- else
- return std::nullopt;
-}
-
void usage(const char *program_name, FILE *fp)
{
fprintf(fp,