From d41bb461a1bfd3587ed6eb399c4061021d4f5d52 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Sun, 26 Jan 2025 23:59:38 +0100 Subject: Codegen: PoC hello world --- src/codegen.zig | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/codegen.zig b/src/codegen.zig index 9adca93..d10aa88 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -65,6 +65,19 @@ pub const CodeGen = struct { const main_entry = core.LLVMAppendBasicBlock(main_func, "entrypoint"); core.LLVMPositionBuilderAtEnd(builder, main_entry); + const format_str = "Hello, World!\n"; + const format_str_ptr = core.LLVMBuildGlobalStringPtr(builder, format_str, "format_str_ptr"); + + var print_function_params = [_]types.LLVMTypeRef{ + core.LLVMPointerType(core.LLVMInt8Type(), 0), + }; + const print_func_type = core.LLVMFunctionType(core.LLVMVoidType(), &print_function_params, print_function_params.len, 0); + const print_func = core.LLVMAddFunction(self.llvm_module, "printf", print_func_type); + var print_func_args = [_]types.LLVMValueRef{ + format_str_ptr, + }; + _ = core.LLVMBuildCall2(builder, print_func_type, print_func, &print_func_args, print_func_args.len, "print_call"); + var exit_func_params = [_]types.LLVMTypeRef{ core.LLVMInt32Type(), }; -- cgit 1.4.1