diff --git a/source/compile.c b/source/compile.c index 77d6442..43c3bc2 100644 --- a/source/compile.c +++ b/source/compile.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "eaxhla.tab.h" diff --git a/source/unix.c b/source/unix.c index 5bee97b..a6e4af9 100644 --- a/source/unix.c +++ b/source/unix.c @@ -1,69 +1,66 @@ #include "assembler.h" #include "unix.h" -uint8_t elf_main_header_byte [ELF_MAIN_HEADER_SIZE] = { +#include + +unsigned char elf_main_header_byte[ELF_MAIN_HEADER_SIZE] = { 0X7F, 0X45, 0X4C, 0X46, 0X02, 0X01, 0X01, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0X00, 0X3E, 0X00, 0X01, 0X00, 0X00, 0X00, - 0XB0, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, // entry_point + 0XB0, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X40, 0X00, 0X38, 0X00, - 0X02, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X02, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00 }; -uint8_t elf_text_sector_byte [ELF_TEXT_SECTOR_SIZE] = { +unsigned char elf_text_sector_byte[ELF_TEXT_SECTOR_SIZE] = { 0X01, 0X00, 0X00, 0X00, 0X05, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, - 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // HDR + TXT - 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // HDR + TXT - 0X00, 0X10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00 }; -uint8_t elf_data_sector_byte [ELF_DATA_SECTOR_SIZE] = { +unsigned char elf_data_sector_byte[ELF_DATA_SECTOR_SIZE] = { 0X01, 0X00, 0X00, 0X00, 0X06, 0X00, 0X00, 0X00, - 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // HDR + TXT - 0X00, 0X10, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, // +++ ^ - 0X00, 0X10, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, // +++ ^ - 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // DAT - 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // DAT - 0X00, 0X10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X10, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X10, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00 }; -void elf_main_header (uint8_t has_program, - uint8_t for_linux, - uint8_t for_x86_64) { - // - uint32_t enter = text_entry_point + 0x4000b0u; +void elf_main_header(unsigned char has_program, + unsigned char for_linux, + unsigned char for_x86_64) { + unsigned int enter = text_entry_point + 0x4000b0u; - elf_main_header_byte [16] = (has_program) ? 0x02 : 0x03; // library - elf_main_header_byte [ 7] = (for_linux) ? 0x03 : 0x00; // system v - elf_main_header_byte [18] = (for_x86_64) ? 0x3e : 0x00; + elf_main_header_byte[16] = (has_program) ? 0x02 : 0x03; + elf_main_header_byte[ 7] = (for_linux) ? 0x03 : 0x00; + elf_main_header_byte[18] = (for_x86_64) ? 0x3e : 0x00; - memcpy (& elf_main_header_byte [24], & enter, sizeof (enter)); + memcpy (& elf_main_header_byte[24], & enter, sizeof(enter)); } -void elf_text_sector (uint64_t text_size, - uint64_t data_size) { - // - uint64_t text = ELF_HEADER_SIZE + text_size - data_size; +void elf_text_sector(unsigned long text_size, unsigned long data_size) { + unsigned long text = ELF_HEADER_SIZE + text_size - data_size; - memcpy (& elf_text_sector_byte [32], & text, sizeof (text)); - memcpy (& elf_text_sector_byte [40], & text, sizeof (text)); + memcpy (& elf_text_sector_byte[32], & text, sizeof(text)); + memcpy (& elf_text_sector_byte[40], & text, sizeof(text)); } -void elf_data_sector (uint64_t text_size, - uint64_t data_size) { - // - uint64_t data = data_size; - uint64_t core = ELF_HEADER_SIZE + text_size - data_size; - uint64_t move = 0x401000 + core; +void elf_data_sector(unsigned long text_size, unsigned long data_size) { + unsigned long data = data_size; + unsigned long core = ELF_HEADER_SIZE + text_size - data_size; + unsigned long move = 0x401000 + core; - memcpy (& elf_data_sector_byte [ 8], & core, sizeof (core)); - memcpy (& elf_data_sector_byte [16], & move, sizeof (move)); - memcpy (& elf_data_sector_byte [24], & move, sizeof (move)); - memcpy (& elf_data_sector_byte [32], & data, sizeof (data)); - memcpy (& elf_data_sector_byte [40], & data, sizeof (data)); + memcpy (& elf_data_sector_byte[ 8], & core, sizeof(core)); + memcpy (& elf_data_sector_byte[16], & move, sizeof(move)); + memcpy (& elf_data_sector_byte[24], & move, sizeof(move)); + memcpy (& elf_data_sector_byte[32], & data, sizeof(data)); + memcpy (& elf_data_sector_byte[40], & data, sizeof(data)); } diff --git a/source/unix.h b/source/unix.h index a486efb..221ae30 100644 --- a/source/unix.h +++ b/source/unix.h @@ -1,8 +1,5 @@ #ifndef UNIX_H -#include -#include - #define ELF_MAIN_HEADER_SIZE (0x40) #define ELF_TEXT_SECTOR_SIZE (0x38) #define ELF_DATA_SECTOR_SIZE (0x38) @@ -11,19 +8,16 @@ + ELF_TEXT_SECTOR_SIZE \ + ELF_DATA_SECTOR_SIZE) -extern uint8_t elf_main_header_byte [ELF_MAIN_HEADER_SIZE]; -extern uint8_t elf_text_sector_byte [ELF_TEXT_SECTOR_SIZE]; -extern uint8_t elf_data_sector_byte [ELF_DATA_SECTOR_SIZE]; +extern unsigned char elf_main_header_byte[ELF_MAIN_HEADER_SIZE]; +extern unsigned char elf_text_sector_byte[ELF_TEXT_SECTOR_SIZE]; +extern unsigned char elf_data_sector_byte[ELF_DATA_SECTOR_SIZE]; -extern void elf_main_header (uint8_t has_program, - uint8_t for_linux, - uint8_t for_x86_64); +extern void elf_main_header(unsigned char has_program, + unsigned char for_linux, + unsigned char for_x86_64); -extern void elf_text_sector (uint64_t text_size, - uint64_t data_size); - -extern void elf_data_sector (uint64_t text_size, - uint64_t data_size); +extern void elf_text_sector(unsigned long text_size, unsigned long data_size); +extern void elf_data_sector(unsigned long text_size, unsigned long data_size); #define UNIX_H #endif