summaryrefslogtreecommitdiffhomepage
path: root/asm/arm/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'asm/arm/main.cpp')
-rw-r--r--asm/arm/main.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/asm/arm/main.cpp b/asm/arm/main.cpp
new file mode 100644
index 0000000..20e67ab
--- /dev/null
+++ b/asm/arm/main.cpp
@@ -0,0 +1,41 @@
+#include <iostream>
+#include <stdexcept>
+
+#include <fmt/format.h>
+
+#include <libreichwein/file.h>
+
+#include "assembler.h"
+#include "instruction.h"
+
+void dump(const code_sequence& c)
+{
+ for (size_t i = 0; i < c.size(); ++i) {
+ if ((i % 16) == 0) {
+ if (i > 0)
+ std::cout << std::endl;
+ } else {
+ std::cout << " ";
+ }
+ std::cout << fmt::format("{:02x}", c[i]);
+ }
+ std::cout << std::endl;
+}
+
+int main(int argc, char* argv[])
+{
+ try {
+ if (argc == 2) {
+ Assembler assembler;
+ std::string source {Reichwein::File::getFile(argv[1])};
+ code_sequence result {assembler.encode(source)};
+ dump(result);
+ }
+ return 0;
+ } catch (const std::exception& ex) {
+ std::cerr << "Error: " << ex.what() << std::endl;
+ return 1;
+ }
+ return 2;
+}
+