X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=code.c;h=11fe91b645103ec747b78ea056d3ba92fac3543e;hb=a5e1f40b85faff802b8471c25ba9eb6f51e98ed5;hp=392508832792f25855734249ed03db5280d4f68a;hpb=8049252f651bb31f6965303c7f141980b0aa5c6b;p=xonotic%2Fgmqcc.git diff --git a/code.c b/code.c index 3925088..11fe91b 100644 --- a/code.c +++ b/code.c @@ -83,15 +83,6 @@ VECTOR_MAKE(prog_section_function, code_functions ); VECTOR_MAKE(int, code_globals ); VECTOR_MAKE(char, code_chars ); -int code_strings_add(const char *src) { - size_t size = strlen(src); - size_t iter = 0; - while (iter < size) - code_chars_add(src[iter++]); - code_chars_add('\0'); - return code_chars_elements; -} - void code_init() { /* omit creation of null code */ if (opts_omit_nullcode) @@ -113,13 +104,13 @@ void code_init() { } void code_test() { - code_strings_add("m_init"); - code_strings_add("print"); - code_strings_add("hello world\n"); - code_strings_add("m_keydown"); - code_strings_add("m_draw"); - code_strings_add("m_toggle"); - code_strings_add("m_shutdown"); + code_chars_put("m_init", 0x6); + code_chars_put("print", 0x5); + code_chars_put("hello world\n", 0xC); + code_chars_put("m_keydown", 0x9); + code_chars_put("m_draw", 0x6); + code_chars_put("m_toggle", 0x8); + code_chars_put("m_shutdown", 0xA); code_globals_add(1); /* m_init */ code_globals_add(2); /* print */ @@ -214,18 +205,21 @@ void code_write() { *((int32_t*)&code_functions_data[i].argsize) ); util_debug("GEN", " NAME: %s\n", &code_chars_data[code_functions_data[i].name]); - util_debug("GEN", " CODE:\n"); - for (;;) { - if (code_statements_data[j].opcode != INSTR_DONE && - code_statements_data[j].opcode != INSTR_RETURN) - util_debug("GEN", " %s {0x%05d,0x%05d,0x%05d}\n", - asm_instr[code_statements_data[j].opcode].m, - code_statements_data[j].s1, - code_statements_data[j].s2, - code_statements_data[j].s3 - ); - else break; - j++; + /* Internal functions have no code */ + if (code_functions_data[i].entry >= 0) { + util_debug("GEN", " CODE:\n"); + for (;;) { + if (code_statements_data[j].opcode != INSTR_DONE && + code_statements_data[j].opcode != INSTR_RETURN) + util_debug("GEN", " %s {0x%05d,0x%05d,0x%05d}\n", + asm_instr[code_statements_data[j].opcode].m, + code_statements_data[j].o1.s1, + code_statements_data[j].o2.s2, + code_statements_data[j].o3.s3 + ); + else break; + j++; + } } }