about summary refs log tree commit diff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorYour Name <you@example.com>2020-07-20 02:54:22 +0200
committerYour Name <you@example.com>2020-07-20 02:54:22 +0200
commitc69f053c29faa47d0600f5b147835e970d9cf654 (patch)
treed97af2f279114c72c3db81ffb489c316fb3f6dd6 /src/main.cpp
downloadAARM64-Disassembler-c69f053c29faa47d0600f5b147835e970d9cf654.tar.gz
AARM64-Disassembler-c69f053c29faa47d0600f5b147835e970d9cf654.tar.bz2
AARM64-Disassembler-c69f053c29faa47d0600f5b147835e970d9cf654.zip
Initial Commit HEAD master
Half-added some basic AARM64 instructions such as ADD, RET, MOV, NOP...
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..c213f22
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "include/utils.hpp"
+#include "include/disassemble.hpp"
+
+/* AARM64 dissasembler */
+
+int main(int argc, char** argv)
+{
+    (void)argc;
+    int fd;
+    uint64_t textstart;
+    uint64_t textend;
+    struct stat sb;
+    uint8_t* buffer;
+
+    fd = open(argv[1], O_RDONLY);
+    fstat(fd, &sb);
+
+    buffer = (uint8_t*)mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+    textstart = 0;
+    textend = sb.st_size;
+    Utils::findelf(buffer, &textstart, &textend);
+
+    uint32_t pos = 0;
+    while((pos + textstart) < textend)
+        pos += Disasm::disassemble(buffer, pos, textstart);
+
+    munmap(buffer, sb.st_size);
+
+    return 0;
+}