working on this repo again...

This commit is contained in:
ed
2025-06-15 16:23:46 -04:00
parent 80c830b59d
commit a54f4b0b57
10 changed files with 29181 additions and 26352 deletions
-1
View File
@@ -25,7 +25,6 @@ indent_style = tab
indent_size = 2 indent_size = 2
charset = utf-8 charset = utf-8
[*.{natvis, natstepfilter}] [*.{natvis, natstepfilter}]
indent_style = tab indent_style = tab
indent_size = 4 indent_size = 4
+1
View File
@@ -1 +1,2 @@
build/** build/**
.vscode/settings.json
-9
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"
}
}
-3
View File
@@ -122,7 +122,4 @@ typedef s8 b8;
typedef s16 b16; typedef s16 b16;
typedef s32 b32; typedef s32 b32;
typedef void* memptr;
typedef void const* memptr_const;
#pragma endregion Basic Types #pragma endregion Basic Types
+23 -23
View File
@@ -19,14 +19,14 @@
#define ASSERT( cond ) ASSERT( cond, NULL ) #define ASSERT( cond ) ASSERT( cond, NULL )
#define ASSERT_MSG( cond, msg, ... ) \ #define ASSERT_MSG( cond, msg, ... ) \
do \ do \
{ \ { \
if ( ! ( cond ) ) \ if ( ! ( cond ) ) \
{ \ { \
assert_handler( #cond, __FILE__, scast( s64, __LINE__ ), msg, ##__VA_ARGS__ ); \ assert_handler( #cond, __FILE__, scast( s64, __LINE__ ), msg, ##__VA_ARGS__ ); \
GEN_DEBUG_TRAP(); \ GEN_DEBUG_TRAP(); \
} \ } \
} while ( 0 ) } while ( 0 )
#define ASSERT_NOT_NULL( ptr ) ASSERT_MSG( ( ptr ) != NULL, #ptr " must not be NULL" ) #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__ ) #define PANIC( msg, ... ) ASSERT_MSG( 0, msg, ##__VA_ARGS__ )
#if Build_Debug #if Build_Debug
#define FATAL( ... ) \ #define FATAL( ... ) \
do \ do \
{ \ { \
local_persist thread_local \ local_persist thread_local \
char buf[GEN_PRINTF_MAXLEN] = { 0 }; \ char buf[GEN_PRINTF_MAXLEN] = { 0 }; \
\ \
str_fmt(buf, PRINTF_MAXLEN, __VA_ARGS__); \ str_fmt(buf, PRINTF_MAXLEN, __VA_ARGS__); \
PANIC(buf); \ PANIC(buf); \
} \ } \
while (0) while (0)
#else #else
# define FATAL( ... ) \ # define FATAL( ... ) \
do \ do \
{ \ { \
str_fmt_out_err( __VA_ARGS__ ); \ str_fmt_out_err( __VA_ARGS__ ); \
process_exit(1); \ process_exit(1); \
} \ } \
while (0) while (0)
#endif #endif
+6 -6
View File
@@ -48,17 +48,17 @@
#ifndef do_once #ifndef do_once
#define do_once( statement ) for ( local_persist b32 once = true; once; once = false, (statement) ) #define do_once( statement ) for ( local_persist b32 once = true; once; once = false, (statement) )
#define do_once_start \ #define do_once_start \
do \ do \
{ \ { \
local_persist \ local_persist \
bool done = false; \ bool done = false; \
if ( done ) \ if ( done ) \
break; \ break; \
done = true; done = true;
#define do_once_end \ #define do_once_end \
} \ } \
while(0); while(0);
#endif #endif
+2 -2
View File
@@ -4,14 +4,14 @@
# pragma clang diagnostic ignored "-Wunused-but-set-variable" # pragma clang diagnostic ignored "-Wunused-but-set-variable"
# pragma clang diagnostic ignored "-Wswitch" # pragma clang diagnostic ignored "-Wswitch"
# pragma clang diagnostic ignored "-Wunused-variable" # 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 "-Wvarargs"
# pragma clang diagnostic ignored "-Wunused-function" # pragma clang diagnostic ignored "-Wunused-function"
#endif #endif
#ifdef __GNUC__ #ifdef __GNUC__
# pragma GCC diagnostic push # 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 "-Wcomment"
# pragma GCC diagnostic ignored "-Wswitch" # pragma GCC diagnostic ignored "-Wswitch"
# pragma GCC diagnostic ignored "-Wunused-variable" # pragma GCC diagnostic ignored "-Wunused-variable"
+24 -25
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 BITS 64 ; Explicitly specify 64-bit mode
DEFAULT REL ; Use RIP-relative addressing by default DEFAULT REL ; Use RIP-relative addressing by default
; Data section ; Data section
section .data section .data
message db "Hello, World!", 13, 10, 0 ; String with CRLF and null terminator message db "Hello, x86-64 ASM!", 13, 10, 0 ; String with CRLF and null terminator
message_len equ $ - message ; Calculate string length message_len equ $ - message ; Calculate string length
; Code section ; Code section
section .text section .text
global main ; Export main symbol for linker global main ; Export main symbol for linker
extern ExitProcess ; Import Windows API functions extern ExitProcess ; Import Windows API functions
extern GetStdHandle extern GetStdHandle
extern WriteConsoleA extern WriteConsoleA
main: main:
; Function prologue ; Function prologue
push rbp push rbp
mov rbp, rsp mov rbp, rsp
sub rsp, 32 ; Shadow space for Windows API calls sub rsp, 32 ; Shadow space for Windows API calls
; Get stdout handle ; Get stdout handle
mov ecx, -11 ; STD_OUTPUT_HANDLE mov ecx, -11 ; STD_OUTPUT_HANDLE
call GetStdHandle call GetStdHandle
mov rbx, rax ; Save handle for WriteConsole mov rbx, rax ; Save handle for WriteConsole
; Write message ; Write message
mov rcx, rbx ; Console handle mov rcx, rbx ; Console handle
lea rdx, [message] ; Message buffer lea rdx, [message] ; Message buffer
mov r8d, message_len ; Message length mov r8d, message_len ; Message length
lea r9, [rsp+28] ; Written chars (unused) lea r9, [rsp+28] ; Written chars (unused)
mov qword [rsp+20], 0 ; Reserved (must be 0) mov qword [rsp+20], 0 ; Reserved (must be 0)
call WriteConsoleA call WriteConsoleA
; Exit program ; Exit program
xor ecx, ecx ; Exit code 0 xor ecx, ecx ; Exit code 0
call ExitProcess call ExitProcess
; Function epilogue (not reached due to ExitProcess) ; Function epilogue (not reached due to ExitProcess)
leave leave
ret ret
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff