SPIM: следующие символы не определены, но они - PullRequest
0 голосов
/ 14 марта 2019

Я новичок в SPIM и использую его для написания макета компилятора в рамках курса по разработке компилятора.

Рассмотрим следующую программу:

.data
string_access_violation: .asciiz "Access Violation"
string_illegal_div_by_0: .asciiz "Division By Zero"
string_invalid_ptr_dref: .asciiz "Invalid Pointer Dereference"
global_c:   .word 0
_2_func_name: .asciiz "mul"
_5_func_name: .asciiz "inc"
_8_func_name: .asciiz "foo"
_9_func_name: .asciiz "bar"
_10_func_name: .asciiz "main"

.text
.globl main

func1:
    sw $t0, -4($fp)
    sw $t1, -8($fp)
    sw $t2, -12($fp)
    ...

mul:
    ...

func3:
    ...

main:
    jal _0_init_i
    jal _1_init_c
    addi $sp, $sp, -12
    sw $fp, 0($sp)
    sw $ra, 4($sp)

При попытке запустить я получаю следующую ошибку:

spim: (parser) syntax error on line 86 of file FOLDER_5_OUTPUT/MIPS.txt
        mul:
            ^
The following symbols are undefined:
main

Instruction references undefined symbol at 0x00400014
[0x00400014]    0x0c000000  jal 0x00000000 [main]           ; 188: jal main

Но main существует и объявляется как глобальный. Чего мне не хватает?


РЕДАКТИРОВАТЬ: весь код можно найти здесь .

...