summaryrefslogtreecommitdiff
path: root/tnslc/compile/format
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2022-04-11 18:50:08 -0400
committerKyle Gunger <kgunger12@gmail.com>2022-04-11 18:50:08 -0400
commitd0213b4202ac12d7e92f7125e87c31d9ecb637dd (patch)
tree50164dfa2295c6806f3866c24a897789856337a7 /tnslc/compile/format
parent41cb9e107b20153449526cedec101e33f21d8630 (diff)
Remove src folders
Diffstat (limited to 'tnslc/compile/format')
-rw-r--r--tnslc/compile/format/elf.tnsl151
-rw-r--r--tnslc/compile/format/format.tnsl20
-rw-r--r--tnslc/compile/format/iex.tnsl0
-rw-r--r--tnslc/compile/format/out.tnsl0
-rw-r--r--tnslc/compile/format/pe.tnsl0
5 files changed, 171 insertions, 0 deletions
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