diff --git a/test/test0/ELF-i386.hex2 b/test/common_x86/ELF-i386.hex2 similarity index 100% rename from test/test0/ELF-i386.hex2 rename to test/common_x86/ELF-i386.hex2 diff --git a/test/test0/libc.M1 b/test/common_x86/libc.M1 similarity index 100% rename from test/test0/libc.M1 rename to test/common_x86/libc.M1 diff --git a/test/test0/x86_defs.M1 b/test/common_x86/x86_defs.M1 similarity index 100% rename from test/test0/x86_defs.M1 rename to test/common_x86/x86_defs.M1 diff --git a/test/test0/hello.sh b/test/test0/hello.sh index 8e2a575..59cb666 100755 --- a/test/test0/hello.sh +++ b/test/test0/hello.sh @@ -3,9 +3,9 @@ set -ex # Build the test bin/M2-Planet test/test0/cc500.c test/test0/cc0.M1 || exit 1 # Macro assemble with libc written in M1-Macro -M1 -f test/test0/x86_defs.M1 -f test/test0/libc.M1 -f test/test0/cc0.M1 --LittleEndian --Architecture 1 -o test/test0/cc0.hex2 || exit 2 +M1 -f test/common_x86/x86_defs.M1 -f test/common_x86/libc.M1 -f test/test0/cc0.M1 --LittleEndian --Architecture 1 -o test/test0/cc0.hex2 || exit 2 # Resolve all linkages -hex2 -f test/test0/ELF-i386.hex2 -f test/test0/cc0.hex2 --LittleEndian --Architecture 1 --BaseAddress 0x8048000 -o test/results/test0-binary --exec_enable || exit 3 +hex2 -f test/common_x86/ELF-i386.hex2 -f test/test0/cc0.hex2 --LittleEndian --Architecture 1 --BaseAddress 0x8048000 -o test/results/test0-binary --exec_enable || exit 3 # Ensure binary works if host machine supports test if [ "$(get_machine)" = "x86_64" ] diff --git a/test/test1/ELF-i386.hex2 b/test/test1/ELF-i386.hex2 deleted file mode 100644 index 40c7d6e..0000000 --- a/test/test1/ELF-i386.hex2 +++ /dev/null @@ -1,61 +0,0 @@ -### Copyright (C) 2016 Jeremiah Orians -### Copyright (C) 2017 Jan Nieuwenhuizen -### This file is part of stage0. -### -### stage0 is free software: you an redistribute it and/or modify -### it under the terms of the GNU General Public License as published by -### the Free Software Foundation, either version 3 of the License, or -### (at your option) any later version. -### -### stage0 is distributed in the hope that it will be useful, -### but WITHOUT ANY WARRANTY; without even the implied warranty of -### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -### GNU General Public License for more details. -### -### You should have received a copy of the GNU General Public License -### along with stage0. If not, see . - -### elf32.hex2: 32 bit elf header in hex2 - -## ELF Header -7F 45 4C 46 # e_ident[EI_MAG0-3] ELF's magic number - -01 # e_ident[EI_CLASS] Indicating 32 bit -01 # e_ident[EI_DATA] Indicating little endianness -01 # e_ident[EI_VERSION] Indicating original elf - -00 # e_ident[EI_OSABI] Set at 0 because none cares -00 # e_ident[EI_ABIVERSION] See above - -00 00 00 00 00 00 00 # e_ident[EI_PAD] -02 00 # e_type Indicating Executable -03 00 # e_machine Indicating 32bit x86 -01 00 00 00 # e_version Indicating original elf - -54 80 04 08 # e_entry Address of the entry point -34 00 00 00 # e_phoff Address of program header table -00 00 00 00 # e_shoff Address of section header table - -00 00 00 00 # e_flags -34 00 # e_ehsize Indicating our 52 Byte header - -20 00 # e_phentsize size of a program header table -01 00 # e_phnum number of entries in program table - -00 00 # e_shentsize size of a section header table -00 00 # e_shnum number of entries in section table - -00 00 # e_shstrndx index of the section names - -## Program Header -01 00 00 00 # p_type -00 00 00 00 # p_offset - -00 80 04 08 # p_vaddr -00 80 04 08 # p_physaddr - -2A 36 00 00 # p_filesz -2A 36 00 00 # p_memsz - -07 00 00 00 # p_flags -01 00 00 00 # alignmen diff --git a/test/test1/hello.sh b/test/test1/hello.sh index 79fa95c..fa2ecc5 100755 --- a/test/test1/hello.sh +++ b/test/test1/hello.sh @@ -3,9 +3,9 @@ set -ex # Build the test bin/M2-Planet test/test1/for.c test/test1/for.M1 || exit 1 # Macro assemble with libc written in M1-Macro -M1 -f test/test1/x86_defs.M1 -f test/test1/libc.M1 -f test/test1/for.M1 --LittleEndian --Architecture 1 -o test/test1/for.hex2 || exit 2 +M1 -f test/common_x86/x86_defs.M1 -f test/common_x86/libc.M1 -f test/test1/for.M1 --LittleEndian --Architecture 1 -o test/test1/for.hex2 || exit 2 # Resolve all linkages -hex2 -f test/test1/ELF-i386.hex2 -f test/test1/for.hex2 --LittleEndian --Architecture 1 --BaseAddress 0x8048000 -o test/results/test1-binary --exec_enable || exit 3 +hex2 -f test/common_x86/ELF-i386.hex2 -f test/test1/for.hex2 --LittleEndian --Architecture 1 --BaseAddress 0x8048000 -o test/results/test1-binary --exec_enable || exit 3 # Ensure binary works if host machine supports test if [ "$(get_machine)" = "x86_64" ] diff --git a/test/test1/libc.M1 b/test/test1/libc.M1 deleted file mode 100644 index 9c03d4c..0000000 --- a/test/test1/libc.M1 +++ /dev/null @@ -1,69 +0,0 @@ -## Copyright (C) 2016 Jeremiah Orians -## This file is part of stage0. -## -## stage0 is free software: you an redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## stage0 is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with stage0. If not, see . - -:_start - CALL_IMMEDIATE %FUNCTION_main - COPY_eax_to_ebx - LOAD_IMMEDIATE_eax %1 - INT_80 - -:FUNCTION_exit - POP_ebx - POP_ebx - LOAD_IMMEDIATE_eax %1 - INT_80 - -:FUNCTION_getchar - LOAD_IMMEDIATE_eax %3 - LOAD_IMMEDIATE_ebx %0 - PUSH_ebx - COPY_esp_to_ecx - LOAD_IMMEDIATE_edx %1 - INT_80 - TEST - POP_eax - JUMP_NE8 !FUNCTION_getchar_Done - LOAD_IMMEDIATE_eax %-1 -:FUNCTION_getchar_Done - RETURN - -:FUNCTION_malloc - STORE_eax_into_ESP_IMMEDIATE8 !4 - PUSH_eax - LOAD_IMMEDIATE_eax %45 - LOAD_IMMEDIATE_ebx %0 - INT_80 - POP_ebx - ADD_eax_to_ebx - PUSH_eax - PUSH_ebx - LOAD_IMMEDIATE_eax %45 - INT_80 - POP_ebx - CMP - POP_eax - JUMP_EQ8 !FUNCTION_malloc_Done - LOAD_IMMEDIATE_eax %-1 -:FUNCTION_malloc_Done - RETURN - -:FUNCTION_putchar - LOAD_IMMEDIATE_eax %4 - LOAD_IMMEDIATE_ebx %1 - LOAD_EFFECTIVE_ADDRESS_ecx !4 - COPY_ebx_to_edx - INT_80 - RETURN diff --git a/test/test1/x86_defs.M1 b/test/test1/x86_defs.M1 deleted file mode 100644 index 8d38d69..0000000 --- a/test/test1/x86_defs.M1 +++ /dev/null @@ -1,64 +0,0 @@ -## Copyright (C) 2016 Jeremiah Orians -## This file is part of stage0. -## -## stage0 is free software: you an redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## stage0 is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with stage0. If not, see . - -DEFINE ADD_ebx_to_eax 01D8 -DEFINE ADD_eax_to_ebx 01C3 -DEFINE AND_eax_ebx 21D8 -DEFINE CALL_IMMEDIATE E8 -DEFINE CALL_eax FFD0 -DEFINE CALL_IMMEDIATE E8 -DEFINE CMP 39C3 -DEFINE COPY_eax_to_ebx 89C3 -DEFINE COPY_eax_to_ecx 89C1 -DEFINE COPY_ebx_to_edx 89DA -DEFINE COPY_esp_to_ecx 89E1 -DEFINE INT_80 CD80 -DEFINE JUMP E9 -DEFINE JUMP_EQ 0F84 -DEFINE JUMP_EQ8 74 -DEFINE JUMP_NE8 75 -DEFINE LOAD_BYTE 0FBE00 -DEFINE LOAD_EFFECTIVE_ADDRESS 8D8424 -DEFINE LOAD_EFFECTIVE_ADDRESS_ecx 8D4C24 -DEFINE LOAD_ESP_IMMEDIATE_into_eax 8B8424 -DEFINE LOAD_IMMEDIATE_eax B8 -DEFINE LOAD_IMMEDIATE_ebx BB -DEFINE LOAD_IMMEDIATE_edx BA -DEFINE LOAD_INTEGER 8B00 -DEFINE MOVEZBL 0FB6C0 -DEFINE MOVE_ebx_to_eax 89D8 -DEFINE NOP 00000000 -DEFINE OR_eax_ebx 09D8 -DEFINE POP_eax 58 -DEFINE POP_ebx 5B -DEFINE PUSH_eax 50 -DEFINE PUSH_ebx 53 -DEFINE RETURN C3 -DEFINE SAL_eax_Immediate8 C1E0 -DEFINE SAL_eax_cl D3E0 -DEFINE SAR_eax_cl D3F8 -DEFINE SETE 0F94C0 -DEFINE SETLE 0F9EC0 -DEFINE SETL 0F9CC0 -DEFINE SETGE 0F9DC0 -DEFINE SETG 0F9FC0 -DEFINE SETNE 0F95C0 -DEFINE STORE_CHAR 8803 -DEFINE STORE_eax_into_ESP_IMMEDIATE8 8B4424 -DEFINE STORE_INTEGER 8903 -DEFINE SUBTRACT_eax_from_ebx_into_ebx 29C3 -DEFINE MOVE_ebx_to_eax 89D8 -DEFINE TEST 85C0