diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/haversine/build.sh | 12 | ||||
| -rw-r--r-- | src/haversine/haversine_generator.cpp | 2 | ||||
| -rw-r--r-- | src/haversine/haversine_random.h | 2 | ||||
| -rw-r--r-- | src/meta/md.c (renamed from src/sim86/libs/metadesk/md.c) | 0 | ||||
| -rw-r--r-- | src/meta/md.h (renamed from src/sim86/libs/metadesk/md.h) | 0 | ||||
| -rw-r--r-- | src/meta/md_stb_sprintf.h (renamed from src/sim86/libs/metadesk/md_stb_sprintf.h) | 0 | ||||
| -rw-r--r-- | src/meta/meta.c (renamed from src/sim86/sim86_meta.c) | 31 | ||||
| -rwxr-xr-x | src/sim86/build.sh | 83 | ||||
| -rw-r--r-- | src/sim86/libs/reference_decoder/sim86.h | 12 | ||||
| -rw-r--r-- | src/sim86/sim86.cpp | 12 | ||||
| -rw-r--r-- | src/sim86/sim86.h | 6 |
11 files changed, 66 insertions, 94 deletions
diff --git a/src/haversine/build.sh b/src/haversine/build.sh index 35b92a9..bf56a05 100755 --- a/src/haversine/build.sh +++ b/src/haversine/build.sh @@ -18,7 +18,6 @@ ClangFlags="-fdiagnostics-absolute-paths -ftime-trace GCCFlags="-Wno-cast-function-type -Wno-missing-field-initializers -Wno-int-to-pointer-cast" - #- Main clang=1 @@ -46,10 +45,11 @@ Flags="$Flags $LinkerFlags" [ "$release" = 1 ] && printf '[release mode]\n' printf '[%s compile]\n' "$Compiler" -mkdir -p ../../build - -printf '[metadata generation]\n' +Build="../../build" +mkdir -p "$Build" mkdir -p generated -../../build/sim86_meta haversine.mdesk > generated/types.h -$Compiler $Flags -o ../../build/haversine_generator haversine_generator.cpp +$Compiler $Flags -o "$Build"/meta ../meta/meta.c +"$Build"/meta ./haversine.mdesk > ./generated/types.h + +$Compiler $Flags -o "$Build"/haversine_generator haversine_generator.cpp diff --git a/src/haversine/haversine_generator.cpp b/src/haversine/haversine_generator.cpp index 2f4eee0..b30dbe8 100644 --- a/src/haversine/haversine_generator.cpp +++ b/src/haversine/haversine_generator.cpp @@ -1,7 +1,9 @@ //~ Libraries #include "libs/lr/lr.h" +PUSH_WARNINGS #define STB_SPRINTF_IMPLEMENTATION #include "libs/stb_sprintf.h" +POP_WARNINGS #include "libs/listing_065.cpp" //~ Standard library diff --git a/src/haversine/haversine_random.h b/src/haversine/haversine_random.h index a9ec221..e80df7d 100644 --- a/src/haversine/haversine_random.h +++ b/src/haversine/haversine_random.h @@ -34,7 +34,7 @@ RandomF64(pcg64_random_t *RNG) { s32 Exponent = -64; u64 Significand; - umm Shift; + s32 Shift; /* * Read zeros into the exponent until we hit a one; the rest diff --git a/src/sim86/libs/metadesk/md.c b/src/meta/md.c index 6be1e69..6be1e69 100644 --- a/src/sim86/libs/metadesk/md.c +++ b/src/meta/md.c diff --git a/src/sim86/libs/metadesk/md.h b/src/meta/md.h index faad8e3..faad8e3 100644 --- a/src/sim86/libs/metadesk/md.h +++ b/src/meta/md.h diff --git a/src/sim86/libs/metadesk/md_stb_sprintf.h b/src/meta/md_stb_sprintf.h index 4758435..4758435 100644 --- a/src/sim86/libs/metadesk/md_stb_sprintf.h +++ b/src/meta/md_stb_sprintf.h diff --git a/src/sim86/sim86_meta.c b/src/meta/meta.c index 1201afc..0d0cce0 100644 --- a/src/sim86/sim86_meta.c +++ b/src/meta/meta.c @@ -1,29 +1,4 @@ - -#if __clang__ -# define COMPILER_CLANG 1 -#elif _MSC_VER -# define COMPILER_MSVC 1 -#elif __GNUC__ -# define COMPILER_GNU 1 -#endif - -#if defined(COMPILER_GNU) -# define PUSH_WARNINGS \ -_Pragma("GCC diagnostic push") \ -_Pragma("GCC diagnostic ignored \"-Weverything\"") -# define POP_WARNINGS \ -_Pragma("GCC diagnostic pop") -#elif defined(COMPILER_CLANG) -# define PUSH_WARNINGS \ -_Pragma("clang diagnostic push") \ -_Pragma("clang diagnostic ignored \"-Weverything\"") -# define POP_WARNINGS \ -_Pragma("clang diagnostic pop") -#else -# define PUSH_WARNINGS \ -_Pragma("message \"No compatible compiler found\"") -# define POP_WARNINGS -#endif +#include "lr/lr_macros.h" PUSH_WARNINGS #include "md.h" @@ -109,7 +84,7 @@ int main(int ArgsCount, char *Args[]) MD_Node *MemberNode = MD_FirstNodeWithString(TableTag->first_child, MemberName, 0); int MemberIndex = MD_IndexFromNode(MemberNode); - int MemberCount = MD_ChildCountFromNode(Table); + MD_u64 MemberCount = MD_ChildCountFromNode(Table); MD_S8ListPushFmt(Arena, &Stream, "int %SCount = %d;\n", Node->string, MemberCount); // Header @@ -208,4 +183,4 @@ int main(int ArgsCount, char *Args[]) } return 0; -}
\ No newline at end of file +} diff --git a/src/sim86/build.sh b/src/sim86/build.sh index 74f6828..c4f388d 100755 --- a/src/sim86/build.sh +++ b/src/sim86/build.sh @@ -1,42 +1,51 @@ #!/bin/sh -cd "$(dirname "$(readlink -f "$0")")" +set -eu + +ScriptDirectory="$(dirname "$(readlink -f "$0")")" +cd "$ScriptDirectory" + +#- Globals +CommonCompilerFlags="-DOS_LINUX=1 -fsanitize-trap -nostdinc++" +CommonWarningFlags="-Wall -Wextra -Wconversion -Wdouble-promotion -Wno-sign-conversion -Wno-sign-compare -Wno-double-promotion -Wno-unused-but-set-variable -Wno-unused-variable -Wno-write-strings -Wno-pointer-arith -Wno-unused-parameter -Wno-unused-function" +LinkerFlags="" + +DebugFlags="-g -ggdb -g3" +ReleaseFlags="-O3" + +ClangFlags="-fdiagnostics-absolute-paths -ftime-trace +-Wno-null-dereference -Wno-missing-braces -Wno-vla-extension -Wno-writable-strings -Wno-missing-field-initializers -Wno-address-of-temporary -Wno-int-to-void-pointer-cast" + +GCCFlags="-Wno-cast-function-type -Wno-missing-field-initializers -Wno-int-to-pointer-cast" + +#- Main + +clang=1 +gcc=0 +debug=1 +release=0 +for Arg in "$@"; do eval "$Arg=1"; done +# Exclusive flags +[ "$release" = 1 ] && debug=0 +[ "$gcc" = 1 ] && clang=0 + +[ "$gcc" = 1 ] && Compiler="g++" +[ "$clang" = 1 ] && Compiler="clang" + +Flags="$CommonCompilerFlags" +[ "$debug" = 1 ] && Flags="$Flags $DebugFlags" +[ "$release" = 1 ] && Flags="$Flags $ReleaseFlags" +Flags="$Flags $CommonCompilerFlags" +Flags="$Flags $CommonWarningFlags" +[ "$clang" = 1 ] && Flags="$Flags $ClangFlags" +[ "$gcc" = 1 ] && Flags="$Flags $GCCFlags" +Flags="$Flags $LinkerFlags" + +[ "$debug" = 1 ] && printf '[debug mode]\n' +[ "$release" = 1 ] && printf '[release mode]\n' +printf '[%s compile]\n' "$Compiler" Build="../../build" mkdir -p "$Build" -mkdir -p generated - -Compiler="clang" - -CompilerFlags=" --I./libs/metadesk --g --fdiagnostics-absolute-paths --nostdinc++ --DSIM86_INTERNAL -" - -WarningFlags=" --Wall --Wextra --Wno-unused-label --Wno-unused-variable --Wno-unused-function --Wno-unused-value --Wno-unused-but-set-variable --Wno-missing-field-initializers --Wno-write-strings -" - -printf '[metadata generation]\n' -$Compiler $CompilerFlags $WarningFlags \ - -o "$Build"/sim86_meta \ - sim86_meta.c -"$Build"/sim86_meta ./sim86.mdesk > ./generated/generated.cpp - -printf '[debug mode]\n' -printf '[%s build]\n' "$Compiler" -Source="sim86.cpp" -$Compiler $CompilerFlags $WarningFlags \ - -o "$Build"/sim86 \ - sim86.cpp + +$Compiler $Flags -o "$Build"/sim86 sim86.cpp diff --git a/src/sim86/libs/reference_decoder/sim86.h b/src/sim86/libs/reference_decoder/sim86.h index b065a0e..893487b 100644 --- a/src/sim86/libs/reference_decoder/sim86.h +++ b/src/sim86/libs/reference_decoder/sim86.h @@ -10,18 +10,6 @@ ======================================================================== */ -typedef char unsigned u8; -typedef short unsigned u16; -typedef int unsigned u32; -typedef long long unsigned u64; - -typedef char s8; -typedef short s16; -typedef int s32; -typedef long long s64; - -typedef s32 b32; - #define ArrayCount(Array) (sizeof(Array) / sizeof((Array)[0])) static u32 const SIM86_VERSION = 4; diff --git a/src/sim86/sim86.cpp b/src/sim86/sim86.cpp index 6eee81d..9b233f7 100644 --- a/src/sim86/sim86.cpp +++ b/src/sim86/sim86.cpp @@ -1,9 +1,13 @@ #include <stdio.h> #include <string.h> +#include "sim86.h" +#include "libs/lr/lr.h" + +PUSH_WARNINGS #include "./libs/reference_decoder/sim86_lib.cpp" +POP_WARNINGS -#include "sim86.h" #include "clocks_table.inl" #include "generated/generated.cpp" @@ -143,7 +147,7 @@ b32 IsMatchingOp(instruction_operand *Operand, instruction_clocks_operand_type T } internal void -Run8086(psize MemorySize, u8 *Memory) +Run8086(umm MemorySize, u8 *Memory) { s32 Registers[Register_count] = {}; u32 FlagsRegister = 0; @@ -153,7 +157,7 @@ Run8086(psize MemorySize, u8 *Memory) while(IPRegister < MemorySize) { instruction Decoded; - Sim86_Decode8086Instruction(MemorySize - IPRegister, Memory + IPRegister, &Decoded); + Sim86_Decode8086Instruction((u32)(MemorySize - IPRegister), Memory + IPRegister, &Decoded); if(Decoded.Op) { u32 OldIPRegister = IPRegister; @@ -500,7 +504,7 @@ int main(int ArgsCount, char *Args[]) FILE *File = fopen(FileName, "rb"); if(File) { - psize BytesWritten = fread(GlobalMemory, 1, sizeof(GlobalMemory), File); + umm BytesWritten = fread(GlobalMemory, 1, sizeof(GlobalMemory), File); fclose(File); if(Execute) diff --git a/src/sim86/sim86.h b/src/sim86/sim86.h index 24068e2..230171c 100644 --- a/src/sim86/sim86.h +++ b/src/sim86/sim86.h @@ -3,12 +3,6 @@ #ifndef SIM86_H #define SIM86_H -#define internal static -#define global_variable static -#define local_persist static - -typedef size_t psize; - #define Assert(Expression) if(!(Expression)) { __asm__ volatile("int3"); } #define ArrayCount(Array) (sizeof(Array) / sizeof((Array)[0])) |
