アセンブリにこのコードがあります。
.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) を移動して、関数呼び出しの 2 番目のパラメーターを登録します。
そして、ここに私の疑問があります。レジスタ 25 に何かをロードします。
とは%call16(printf)($28)
? 文字列と数字を出力するのですが、理由がわかりません...