diff options
Diffstat (limited to 'tnslc/compile')
-rw-r--r-- | tnslc/compile/arch/arch.tnsl | 20 | ||||
-rw-r--r-- | tnslc/compile/arch/common.tnsl | 17 | ||||
-rw-r--r-- | tnslc/compile/arch/isa_arm.tnsl | 15 | ||||
-rw-r--r-- | tnslc/compile/arch/isa_risc_v.tnsl | 15 | ||||
-rw-r--r-- | tnslc/compile/arch/isa_x86.tnsl | 15 | ||||
-rw-r--r-- | tnslc/compile/compile.tnsl | 21 | ||||
-rw-r--r-- | tnslc/compile/format/elf.tnsl | 151 | ||||
-rw-r--r-- | tnslc/compile/format/format.tnsl | 20 | ||||
-rw-r--r-- | tnslc/compile/format/iex.tnsl | 0 | ||||
-rw-r--r-- | tnslc/compile/format/out.tnsl | 0 | ||||
-rw-r--r-- | tnslc/compile/format/pe.tnsl | 0 |
11 files changed, 274 insertions, 0 deletions
diff --git a/tnslc/compile/arch/arch.tnsl b/tnslc/compile/arch/arch.tnsl new file mode 100644 index 0000000..5e81673 --- /dev/null +++ b/tnslc/compile/arch/arch.tnsl @@ -0,0 +1,20 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +/; module arch + :import "compile/arch/common.tnsl" + :import "compile/arch/isa_x86.tnsl" +;/
\ No newline at end of file diff --git a/tnslc/compile/arch/common.tnsl b/tnslc/compile/arch/common.tnsl new file mode 100644 index 0000000..cba0d9f --- /dev/null +++ b/tnslc/compile/arch/common.tnsl @@ -0,0 +1,17 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +; struct instruction {}
\ No newline at end of file diff --git a/tnslc/compile/arch/isa_arm.tnsl b/tnslc/compile/arch/isa_arm.tnsl new file mode 100644 index 0000000..0dc3468 --- /dev/null +++ b/tnslc/compile/arch/isa_arm.tnsl @@ -0,0 +1,15 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ diff --git a/tnslc/compile/arch/isa_risc_v.tnsl b/tnslc/compile/arch/isa_risc_v.tnsl new file mode 100644 index 0000000..0dc3468 --- /dev/null +++ b/tnslc/compile/arch/isa_risc_v.tnsl @@ -0,0 +1,15 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ diff --git a/tnslc/compile/arch/isa_x86.tnsl b/tnslc/compile/arch/isa_x86.tnsl new file mode 100644 index 0000000..0dc3468 --- /dev/null +++ b/tnslc/compile/arch/isa_x86.tnsl @@ -0,0 +1,15 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ diff --git a/tnslc/compile/compile.tnsl b/tnslc/compile/compile.tnsl new file mode 100644 index 0000000..263dc59 --- /dev/null +++ b/tnslc/compile/compile.tnsl @@ -0,0 +1,21 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +/; module compile + :include "compile/arch/arch.tnsl" + :include "compile/format/format.tnsl" + +;/ diff --git a/tnslc/compile/format/elf.tnsl b/tnslc/compile/format/elf.tnsl new file mode 100644 index 0000000..8490180 --- /dev/null +++ b/tnslc/compile/format/elf.tnsl @@ -0,0 +1,151 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +# Constants and values used in ELF files + +# File signature +;const {4}uint8 SIGNATURE_ELF = {0x7F, 'E', 'L', 'F'} + +# ELF version always 1 +;const uint8 VERSION_ELF = 1 + +# OS identifiers (from wikipedia) +;enum ABI_ELF [uint8] { + SystemV = 0x0, + HP_UX = 0x1, + NetBSD = 0x2, + Linux = 0x3, + GNUHurd = 0x4, + Solaris = 0x6, + AIX = 0x7, + IRIX = 0x8, + FreeBSD = 0x9, + Tru64 = 0xA, + OpenBSD = 0xC, + OpenVMS = 0xD +} + +# ELF file types (from wikipedia) +;enum TYPE_ELF [uint16] { + ET_NONE = 0x0, + ET_REL = 0x1, + ET_EXEC = 0x2, + ET_DYN = 0x3, + ET_CORE = 0x4, + ET_LOOS = 0xFE00, + ET_HIOS = 0xFEFF, + ET_LOPROC = 0xFF00, + ET_HIPROC = 0xFFFF +} + +# ISA (from wikipedia) +;enum ARCH_ELF [uint16] { + NONE = 0x0, + SPARC = 0x2, + x86_32 = 0x3, + MIPS = 0x8, + PowerPC = 0x14, + PowerPC64 = 0x15, + ARM = 0x28, + SPARC9 = 0x2B, + IA_64 = 0x32, + x86_64 = 0x3E, + ARM64 = 0xB7, + RISC_V = 0xF3 +} + +# Some zeros to fill out the pad in the header +;const {7}uint8 PAD_ZEROS_ELF = {0, 0, 0, 0, 0, 0, 0} + + + +# Internal file structures + +# Identity inside header +;raw struct IdentityELF { + {4}uint8 + signature, + + uint8 + class, + data, + version, + abi, + + # Usually zero + abiVersion, + + {7}uint8 + # Filled with zeros, use PAD_ZEROS_ELF to fill out + pad +} + +# Main header (32 bit) +;raw struct HeaderELF32 { + IdentityELF + identity, + + uint16 + fileType, + arch, + + {4}uint8 + version, + entry, + programHeader, + sectionHeader, + + {4}uint8 + flags, + + uint16 + headerSize, + programHeaderSize, + programHeaderEntries, + sectionHeaderSize, + sectionHeaderEntries, + shNameIndex +} + +# Main header (64 bit) +;raw struct HeaderELF64 { + IdentityELF + identity, + + uint16 + fileType, + arch, + + {4}uint8 + version, + + {8}uint8 + entry, + programHeader, + sectionHeader, + + {4}uint8 + flags, + + uint16 + headerSize, + programHeaderSize, + programHeaderEntries, + sectionHeaderSize, + sectionHeaderEntries, + shNameIndex +} + diff --git a/tnslc/compile/format/format.tnsl b/tnslc/compile/format/format.tnsl new file mode 100644 index 0000000..2d4ed4b --- /dev/null +++ b/tnslc/compile/format/format.tnsl @@ -0,0 +1,20 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +/; module format + :include "compile/format/out.tnsl" + :include "compile/format/elf.tnsl" +;/
\ No newline at end of file diff --git a/tnslc/compile/format/iex.tnsl b/tnslc/compile/format/iex.tnsl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tnslc/compile/format/iex.tnsl diff --git a/tnslc/compile/format/out.tnsl b/tnslc/compile/format/out.tnsl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tnslc/compile/format/out.tnsl diff --git a/tnslc/compile/format/pe.tnsl b/tnslc/compile/format/pe.tnsl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tnslc/compile/format/pe.tnsl |