hello_slices

This commit is contained in:
2025-06-16 02:13:37 -04:00
parent b1b401784a
commit 4654fda9f7
9 changed files with 269 additions and 4 deletions

View File

@ -1,2 +1,75 @@
$nasm = 'nasm'
& $nasm -help
$ps1_devshell = join-path $PSScriptRoot 'helpers/devshell.ps1'
. $ps1_devshell -arch amd64
$path_root = split-path -Path $PSScriptRoot -Parent
$path_build = join-path $path_root 'build'
$path_code = join-path $path_root 'code'
$path_asm = join-path $path_code 'asm'
$path_toolchain = join-path $path_root 'toolchain'
$path_radlink = join-path $path_toolchain 'radlink'
if ((test-path $path_build) -eq $false) {
new-item -itemtype directory -path $path_build
}
$hello_nasm = join-path $path_asm 'hello_nasm.asm'
$listing = join-path $path_build 'hello_nasm.list'
$link_obj = join-path $path_build 'hello_nasm.o'
$exe = join-path $path_build 'hello_nasm.exe'
$nasm = 'nasm'
$radlink = join-path $path_radlink 'radlink.exe'
push-location $path_root
$f_assemble_only = '-a'
$f_bin_fmt_coff = '-f coff'
$f_bin_fmt_win64 = '-f win64'
$f_debug = '-g'
$f_debug_fmt_win64 = '-g cv8'
$f_dmacro = '-Dmacro='
$f_Ipath = '-Ipath '
$f_listing = '-l'
$f_preprocess_only = '-E'
$f_optimize_none = '-O0'
$f_optimize_min = '-O1'
$f_optimize_multi = '-Ox'
$f_optimize_multi_disp = '-Ov'
$f_outfile = '-o '
$f_warnings_as_errors = '-Werror'
$args = @(
$hello_nasm,
$f_optimize_none,
$f_bin_fmt_win64,
$f_debug_fmt_win64,
($f_listing + $listing),
($f_outfile + $link_obj)
)
& $nasm $args
$lib_kernel32 = 'kernel32.lib'
$lib_msvcrt = 'msvcrt.lib'
$link = 'link.exe'
$link_debug = '/DEBUG:'
$link_entrypoint = '/ENTRY:'
$link_library = '/'
$link_outfile = '/OUT:'
$link_win_machine_64 = '/MACHINE:X64'
$link_win_subsystem_console = '/SUBSYSTEM:CONSOLE'
$link_win_subsystem_windows = '/SUBSYSTEM:WINDOWS'
$rad_debug = '/RAD_DEBUG'
$rad_debug_name = '/RAD_DEBUG_NAME:'
$rad_large_pages = '/RAD_LARGE_PAGES:'
$args = @(
$rad_debug,
# ($link_debug + 'FULL'),
$link_win_machine_64,
$link_win_subsystem_console,
$lib_kernel32,
# $lib_msvcrt,
($link_entrypoint + 'main'),
($link_outfile + $exe),
$link_obj
)
& $radlink $args
pop-location

View File

@ -0,0 +1,76 @@
$ps1_devshell = join-path $PSScriptRoot 'helpers/devshell.ps1'
. $ps1_devshell -arch amd64
$path_root = split-path -Path $PSScriptRoot -Parent
$path_build = join-path $path_root 'build'
$path_code = join-path $path_root 'code'
$path_asm = join-path $path_code 'asm'
$path_toolchain = join-path $path_root 'toolchain'
$path_radlink = join-path $path_toolchain 'radlink'
if ((test-path $path_build) -eq $false) {
new-item -itemtype directory -path $path_build
}
$hello_nasm = join-path $path_asm 'hello_slices.asm'
$listing = join-path $path_build 'hello_slices.list'
$link_obj = join-path $path_build 'hello_slices.o'
$exe = join-path $path_build 'hello_slices.exe'
$nasm = 'nasm'
$radlink = join-path $path_radlink 'radlink.exe'
push-location $path_root
$f_assemble_only = '-a'
$f_bin_fmt_coff = '-f coff'
$f_bin_fmt_win64 = '-f win64'
$f_debug = '-g'
$f_debug_fmt_win64 = '-g cv8'
$f_dmacro = '-Dmacro='
$f_Ipath = '-Ipath '
$f_listing = '-l'
$f_preprocess_only = '-E'
$f_optimize_none = '-O0'
$f_optimize_min = '-O1'
$f_optimize_multi = '-Ox'
$f_optimize_multi_disp = '-Ov'
$f_outfile = '-o '
$f_warnings_as_errors = '-Werror'
$args = @(
$hello_nasm,
$f_optimize_none,
# $f_preprocess_only,
$f_bin_fmt_win64,
$f_debug_fmt_win64,
($f_listing + $listing),
($f_outfile + $link_obj)
)
& $nasm $args
$lib_kernel32 = 'kernel32.lib'
$lib_msvcrt = 'msvcrt.lib'
$link = 'link.exe'
$link_debug = '/DEBUG:'
$link_entrypoint = '/ENTRY:'
$link_library = '/'
$link_outfile = '/OUT:'
$link_win_machine_64 = '/MACHINE:X64'
$link_win_subsystem_console = '/SUBSYSTEM:CONSOLE'
$link_win_subsystem_windows = '/SUBSYSTEM:WINDOWS'
$rad_debug = '/RAD_DEBUG'
$rad_debug_name = '/RAD_DEBUG_NAME:'
$rad_large_pages = '/RAD_LARGE_PAGES:'
$args = @(
$rad_debug,
# ($link_debug + 'FULL'),
$link_win_machine_64,
$link_win_subsystem_console,
$lib_kernel32,
# $lib_msvcrt,
($link_entrypoint + 'main'),
($link_outfile + $exe),
$link_obj
)
& $radlink $args
pop-location

View File

@ -0,0 +1,28 @@
if ($env:VCINSTALLDIR) {
return
}
$ErrorActionPreference = "Stop"
# Use vswhere to find the latest Visual Studio installation
$vswhere_out = & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
if ($null -eq $vswhere_out) {
Write-Host "ERROR: Visual Studio installation not found"
exit 1
}
# Find Launch-VsDevShell.ps1 in the Visual Studio installation
$vs_path = $vswhere_out
$vs_devshell = Join-Path $vs_path "\Common7\Tools\Launch-VsDevShell.ps1"
if ( -not (Test-Path $vs_devshell) ) {
Write-Host "ERROR: Launch-VsDevShell.ps1 not found in Visual Studio installation"
Write-Host Tested path: $vs_devshell
exit 1
}
# Launch the Visual Studio Developer Shell
Push-Location
write-host @args
& $vs_devshell @args
Pop-Location