aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-04-05 00:19:06 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-04-05 03:36:55 -0400
commit8c10b6dcbddc58b488e399690e8ddefb4bafb816 (patch)
tree220269dd294d89c08364ba2a6ee32fadcb8e7be5 /src/codegen.cpp
parenta461ae6c1fd1f8a75126327f104c7c077d35f0a5 (diff)
downloadzig-8c10b6dcbddc58b488e399690e8ddefb4bafb816.tar.gz
zig-8c10b6dcbddc58b488e399690e8ddefb4bafb816.zip
ability to use zig as an assembler
see #243
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index 83b7e01614..28a8243aca 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -4535,6 +4535,22 @@ void codegen_add_root_code(CodeGen *g, Buf *src_dir, Buf *src_basename, Buf *sou
do_code_gen(g);
}
+void codegen_add_root_assembly(CodeGen *g, Buf *src_dir, Buf *src_basename, Buf *source_code) {
+ Buf source_path = BUF_INIT;
+ os_path_join(src_dir, src_basename, &source_path);
+
+ init(g, &source_path);
+
+ assert(g->root_out_name);
+ assert(g->out_type != OutTypeUnknown);
+
+ buf_init_from_str(&g->global_asm, ".intel_syntax noprefix\n");
+ buf_append_buf(&g->global_asm, source_code);
+
+ do_code_gen(g);
+}
+
+
static const char *c_int_type_names[] = {
[CIntTypeShort] = "short",
[CIntTypeUShort] = "unsigned short",