feat: support arbitrary pointer literals and expand CLI build options #275
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR significantly enhances the Wave compiler's system-level programming capabilities and matures its build system. By allowing arbitrary numeric values to be cast as pointers, developers can now interact with fixed memory addresses (essential for embedded or OS development). Additionally, the CLI has been expanded to support professional build workflows, including object file generation and linked executable creation.
Key Changes
1. Arbitrary Pointer Literals
0as a null pointer literal.build_int_to_ptrto safely cast them to the target pointer type.2. Expanded CLI & Build Commands
-oflag to thebuildcommand, allowing developers to compile Wave source files into machine-specific object files (.o).buildcommand now orchestrates the full pipeline—compiling to object code and then linking into a final binary stored in thetarget/directory.runFlag: Added the--imgflag to theruncommand to support specialized image-based build-and-run flows.3. Compilation Pipeline Refactoring
object_build_wave_fileandbuild_wave_fileto handle the multi-stage compilation process.compile_and_buildandcompile_and_build_objinlib.rs, enabling external tools or scripts to programmatically access Wave's build workflows.