working on this repo again...

This commit is contained in:
2025-06-15 16:23:46 -04:00
parent 80c830b59d
commit a54f4b0b57
10 changed files with 29181 additions and 26352 deletions

View File

@ -25,7 +25,6 @@ indent_style = tab
indent_size = 2
charset = utf-8
[*.{natvis, natstepfilter}]
indent_style = tab
indent_size = 4

1
.gitignore vendored
View File

@ -1 +1,2 @@
build/**
.vscode/settings.json

View File

@ -1,9 +0,0 @@
{
"files.associations": {
"*.rmd": "markdown",
"pop_ignores.inline.h": "c",
"basic_types.h": "c",
"push_ignores.inline.h": "c",
"memory.h": "c"
}
}

View File

@ -122,7 +122,4 @@ typedef s8 b8;
typedef s16 b16;
typedef s32 b32;
typedef void* memptr;
typedef void const* memptr_const;
#pragma endregion Basic Types

View File

@ -19,14 +19,14 @@
#define ASSERT( cond ) ASSERT( cond, NULL )
#define ASSERT_MSG( cond, msg, ... ) \
do \
{ \
if ( ! ( cond ) ) \
{ \
assert_handler( #cond, __FILE__, scast( s64, __LINE__ ), msg, ##__VA_ARGS__ ); \
GEN_DEBUG_TRAP(); \
} \
#define ASSERT_MSG( cond, msg, ... ) \
do \
{ \
if ( ! ( cond ) ) \
{ \
assert_handler( #cond, __FILE__, scast( s64, __LINE__ ), msg, ##__VA_ARGS__ ); \
GEN_DEBUG_TRAP(); \
} \
} while ( 0 )
#define ASSERT_NOT_NULL( ptr ) ASSERT_MSG( ( ptr ) != NULL, #ptr " must not be NULL" )
@ -35,24 +35,24 @@
#define PANIC( msg, ... ) ASSERT_MSG( 0, msg, ##__VA_ARGS__ )
#if Build_Debug
#define FATAL( ... ) \
do \
{ \
local_persist thread_local \
char buf[GEN_PRINTF_MAXLEN] = { 0 }; \
\
str_fmt(buf, PRINTF_MAXLEN, __VA_ARGS__); \
PANIC(buf); \
} \
#define FATAL( ... ) \
do \
{ \
local_persist thread_local \
char buf[GEN_PRINTF_MAXLEN] = { 0 }; \
\
str_fmt(buf, PRINTF_MAXLEN, __VA_ARGS__); \
PANIC(buf); \
} \
while (0)
#else
# define FATAL( ... ) \
do \
{ \
str_fmt_out_err( __VA_ARGS__ ); \
process_exit(1); \
} \
# define FATAL( ... ) \
do \
{ \
str_fmt_out_err( __VA_ARGS__ ); \
process_exit(1); \
} \
while (0)
#endif

View File

@ -48,17 +48,17 @@
#ifndef do_once
#define do_once( statement ) for ( local_persist b32 once = true; once; once = false, (statement) )
#define do_once_start \
do \
{ \
#define do_once_start \
do \
{ \
local_persist \
bool done = false; \
if ( done ) \
break; \
break; \
done = true;
#define do_once_end \
} \
#define do_once_end \
} \
while(0);
#endif

View File

@ -4,14 +4,14 @@
# pragma clang diagnostic ignored "-Wunused-but-set-variable"
# pragma clang diagnostic ignored "-Wswitch"
# pragma clang diagnostic ignored "-Wunused-variable"
# pragma clang diagnostic ignored "-Wunknown-pragmas"
# pragma clang diagnostic ignored "-Wunknown-pragmas"
# pragma clang diagnostic ignored "-Wvarargs"
# pragma clang diagnostic ignored "-Wunused-function"
#endif
#ifdef __GNUC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wunknown-pragmas"
# pragma GCC diagnostic ignored "-Wunknown-pragmas"
# pragma GCC diagnostic ignored "-Wcomment"
# pragma GCC diagnostic ignored "-Wswitch"
# pragma GCC diagnostic ignored "-Wunused-variable"

View File

@ -1,43 +1,42 @@
; hello.asm - Hello World with debug symbols for NASM
; hello.asm - Hello World with debug symbols for YASM
BITS 64 ; Explicitly specify 64-bit mode
DEFAULT REL ; Use RIP-relative addressing by default
; Data section
section .data
message db "Hello, World!", 13, 10, 0 ; String with CRLF and null terminator
message_len equ $ - message ; Calculate string length
message db "Hello, x86-64 ASM!", 13, 10, 0 ; String with CRLF and null terminator
message_len equ $ - message ; Calculate string length
; Code section
section .text
global main ; Export main symbol for linker
extern ExitProcess ; Import Windows API functions
extern GetStdHandle
extern WriteConsoleA
main:
; Function prologue
push rbp
mov rbp, rsp
sub rsp, 32 ; Shadow space for Windows API calls
; Function prologue
push rbp
mov rbp, rsp
sub rsp, 32 ; Shadow space for Windows API calls
; Get stdout handle
mov ecx, -11 ; STD_OUTPUT_HANDLE
call GetStdHandle
mov rbx, rax ; Save handle for WriteConsole
; Get stdout handle
mov ecx, -11 ; STD_OUTPUT_HANDLE
call GetStdHandle
mov rbx, rax ; Save handle for WriteConsole
; Write message
mov rcx, rbx ; Console handle
lea rdx, [message] ; Message buffer
mov r8d, message_len ; Message length
lea r9, [rsp+28] ; Written chars (unused)
mov qword [rsp+20], 0 ; Reserved (must be 0)
call WriteConsoleA
; Write message
mov rcx, rbx ; Console handle
lea rdx, [message] ; Message buffer
mov r8d, message_len ; Message length
lea r9, [rsp+28] ; Written chars (unused)
mov qword [rsp+20], 0 ; Reserved (must be 0)
call WriteConsoleA
; Exit program
xor ecx, ecx ; Exit code 0
call ExitProcess
; Exit program
xor ecx, ecx ; Exit code 0
call ExitProcess
; Function epilogue (not reached due to ExitProcess)
leave
ret
; Function epilogue (not reached due to ExitProcess)
leave
ret

File diff suppressed because it is too large Load Diff

29125
toolchain/gencpp/gencpp_c11.h Normal file

File diff suppressed because it is too large Load Diff