MIPS "main" 已声明全局标签但未定义
MIPS "main" declared global label but not defined
这是MIPS 的示例程序。我正在使用 MARS 4.5,并且启用了设置 -> 将程序计数器初始化为全局 "main"(如果已定义)。但是,当我尝试 assemble 时,它说在 .globl main 行上,"main" 声明了全局标签但未定义。我不确定如何解决它?
--------宏定义-----
# Macro : print_str
# Usage: print_str(<address of the string>)
.macro print_str($arg)
li $v0, 4 # System call code for print_str
la $a0, $arg # Address of the string to print
syscall # Print the string
.end_macro
# Macro : print_int
# Usage: print_int(<val>)
.macro print_int($arg)
li $v0, 1 # System call code for print_int
li $a0, $arg # Integer to print
syscall # Print the integer
.end_macro
# Macro : exit
# Usage: exit
.macro exit
li $v0, 10
syscall
.end_macro
------数据段定义----
.data
str: .asciiz "Enter="
-----代码段定义----
.text
.globl main
Main: print_str(str)
print_int(54)
exit
你打错了。您使用 Main:
而不是 main:
。这很重要。
旁注:很高兴看到一个使用宏的 mips 问题。
这是MIPS 的示例程序。我正在使用 MARS 4.5,并且启用了设置 -> 将程序计数器初始化为全局 "main"(如果已定义)。但是,当我尝试 assemble 时,它说在 .globl main 行上,"main" 声明了全局标签但未定义。我不确定如何解决它?
--------宏定义-----
# Macro : print_str
# Usage: print_str(<address of the string>)
.macro print_str($arg)
li $v0, 4 # System call code for print_str
la $a0, $arg # Address of the string to print
syscall # Print the string
.end_macro
# Macro : print_int
# Usage: print_int(<val>)
.macro print_int($arg)
li $v0, 1 # System call code for print_int
li $a0, $arg # Integer to print
syscall # Print the integer
.end_macro
# Macro : exit
# Usage: exit
.macro exit
li $v0, 10
syscall
.end_macro
------数据段定义----
.data
str: .asciiz "Enter="
-----代码段定义----
.text
.globl main
Main: print_str(str)
print_int(54)
exit
你打错了。您使用 Main:
而不是 main:
。这很重要。
旁注:很高兴看到一个使用宏的 mips 问题。