diff --git a/Cargo.toml b/Cargo.toml index 6b87495..42989fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "zern" version = "0.3.0" edition = "2024" +license = "BSD-2-Clause" [dependencies] clap = { version = "4.5.40", features = ["derive"] } diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2e16d76 --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +BSD 2-Clause License + +Copyright (c) 2025-2026, Antoni Piasecki + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/codegen_x86_64.rs b/src/codegen_x86_64.rs index dd6ad99..f0555a0 100644 --- a/src/codegen_x86_64.rs +++ b/src/codegen_x86_64.rs @@ -315,7 +315,7 @@ _builtin_environ: emit!(&mut self.output, "{}:", name.lexeme); emit!(&mut self.output, " push rbp"); emit!(&mut self.output, " mov rbp, rsp"); - emit!(&mut self.output, " sub rsp, 256"); // TODO + emit!(&mut self.output, " sub rsp, 256"); // TODO: eww for (i, param) in params.iter().enumerate() { let offset = env @@ -639,6 +639,8 @@ _builtin_environ: offset ); } + // TODO: since all zern values are 64bit large we currently cannot call + // external functions that expect a non-64bit value past the 6th argument let num_stack = arg_count - 6; for i in 0..num_stack { let arg_idx = arg_count - 1 - i;