我在汇编中有这段代码。
.data
tabela: .word 4, 2, 10, 1, 6
print: .asciiz "The value is: %d\n"
.text
.globl programa
programa:
########################
Do some stuff here.
Value on $10 is -99
########################
la $4,print
move $5,$10
lw $25,%call16(printf)($28)
jalr $25
此代码将打印:
The value is: -99
我明白那个:
la $4,print
加载要在函数调用的第一个参数 ($a0) 上打印的字符串的地址
move $5,$10
移动寄存器 10(在本例中为 -99)上的值以注册函数调用的第二个参数
这是我的疑问。我在寄存器 25 上加载了一些东西。
是什么%call16(printf)($28)
?这是打印字符串和数字的原因,但我不明白为什么......