From 0c8d7b57cb04f3f1046f7bebc6c3148c2ec68c6d Mon Sep 17 00:00:00 2001 From: XOR Date: Thu, 28 Sep 2023 10:55:33 +0200 Subject: [PATCH] Initial Commit --- .clang-format | 15 ++++++++++ .gitignore | 70 +++++++++++++++++++++++++++++++++++++++++++++ Makefile | 20 +++++++++++++ build/eipaemulator | Bin 0 -> 15680 bytes design.txt | 24 ++++++++++++++++ src/main.c | 41 ++++++++++++++++++++++++++ 6 files changed, 170 insertions(+) create mode 100755 .clang-format create mode 100755 .gitignore create mode 100755 Makefile create mode 100755 build/eipaemulator create mode 100755 design.txt create mode 100755 src/main.c diff --git a/.clang-format b/.clang-format new file mode 100755 index 0000000..08958a8 --- /dev/null +++ b/.clang-format @@ -0,0 +1,15 @@ +#BasedOnStyle: None +AlignTrailingComments: true +BreakBeforeBraces: Allman +ColumnLimit: 0 +IndentWidth: 4 +KeepEmptyLinesAtTheStartOfBlocks: false +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PointerBindsToType: false +SpacesBeforeTrailingComments: 1 +TabWidth: 4 +UseTab: Never + +AlignArrayOfStructures: Right +SpaceBeforeSquareBrackets: false diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..c155c8d --- /dev/null +++ b/.gitignore @@ -0,0 +1,70 @@ +# ---> C +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex +eipaasm +eipaasm_debug +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +#EIPA specific +*.eipa +!test*.eipa +*.eipaimg + +#Code editor +.vscode/* +.idea/* +compile_commands.json +.cache/* +.#* +*.*~ + +#Code analysis +softwipe*.* \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..82b7936 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +CC := clang +CFLAGS := -Wall -Wextra +SRC_DIR := src +HEADER_DIR := header +BUILD_DIR := build +LIBS := +OBJECT_FILES := $(patsubst %.c, %.o, $(wildcard $(SRC_DIR)/*.c)) +HEADER_FILES := $(wildcard $(HEADER_DIR)/*.h) +OBJECT_FILES := $(patsubst $(SRC_DIR)/%, $(BUILD_DIR)/%, $(OBJECT_FILES)) +MAIN_EXE_NAME := eipaemulator + +all build/eipaemulator: $(OBJECT_FILES) + $(CC) $(CFLAGS) $^ $(LIBS) -o $(BUILD_DIR)/$(MAIN_EXE_NAME) + +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(HEADER_FILES) + @mkdir -p $(BUILD_DIR) + $(CC) -c $(CFLAGS) $(patsubst %.h,,$^) -o $@ + +clean: + rm -r $(BUILD_DIR) diff --git a/build/eipaemulator b/build/eipaemulator new file mode 100755 index 0000000000000000000000000000000000000000..d408ffa649fddf161bab004be6692df8538105e7 GIT binary patch literal 15680 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 KUF$VpRs92)14FO? literal 0 HcmV?d00001 diff --git a/design.txt b/design.txt new file mode 100755 index 0000000..35e6114 --- /dev/null +++ b/design.txt @@ -0,0 +1,24 @@ +Instructions: + INP 0b0001 | +Adress + OUT 0b0010 | +Adress + LDA 0b0011 | +Adress + STA 0b0100 | +Adress + INC 0b0101 | no Adress + DEC 0b0110 | no Adress + JPP 0b0111 | +Adress/Label + JPZ 0b1000 | +Adress/Label + JPN 0b1001 | +Adress/Label + JPU 0b1010 | +Adress/Label + EOJ 0b1011 | no Adress + +Instruction format, [] means optional: + instruction [mem_adress]; [Comment] + +Memory: + 32 Bit Data with + 28 Bit Adresess-> 24Mb Memory + +Instruction Layout: + XXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYY + X: Instruction Opcode (4bit) + Y: Memory Adress (28bit) diff --git a/src/main.c b/src/main.c new file mode 100755 index 0000000..682c079 --- /dev/null +++ b/src/main.c @@ -0,0 +1,41 @@ +// This is a part of the EIPA Platform + +// Read an EIPA image and print it out in Binary form + +#include +#include + +#define MAX_MEMORY 268435456 + +void print_target_code(__uint32_t *target_code) +{ + int instruction_index = 0; + while (target_code[instruction_index] != 0) + { + int i = 0; + for (i = (sizeof(target_code[instruction_index]) * 8) - 1; i >= 0; i--) + { + putchar(target_code[instruction_index] & (1u << i) ? '1' : '0'); + } + printf("\n"); + instruction_index++; + } +} + +int main(int argc, char const *argv[]) +{ + if(argc < 2) + { + printf("Specify input file\n"); + } + FILE *input = fopen(argv[1], "r"); + if(input == NULL) return -1; + + __uint32_t *target_code = malloc(MAX_MEMORY*sizeof(target_code)); + + fread(target_code, sizeof(target_code), MAX_MEMORY, input); + + print_target_code(target_code); + + return 0; +}