在MIPS宏中传递值

时间:2014-06-08 19:34:31

标签: assembly macros mips

我一直在研究MIPS作为汇编的介绍,最近开始玩宏。我希望能够做的是将另一个宏生成的值或任何特定寄存器中的任何值传递到另一个宏。即,

.data

.macro print_int(%x) #this macro prints a given integer %x
li      $v0, 1
li      $a0, %x
syscall
.end_macro

.macro terminate     #this macro terminates a program
li      $v0, 10
syscall
.end_macro

.text
main:

li      $t0, 7       #first, load the value 7 into register t0
print_int($t0)       #then, attempt to pass the value in $t0 through print_int

terminate            #end program

此程序(特别是print_int($t0)行)未通过汇编程序并作为错误出现。是否有适当的语法方法来实现这一点,或者我的方法根本不正确?

1 个答案:

答案 0 :(得分:1)

纠正错误永远不会太晚!你有很多错误。首先,您不能使用寄存器值作为第二个参数调用procedure TForm1.FormCreate(Sender: TObject); begin image1.Picture.LoadFromFile('C:\ChronSource\ChronDialogs\11.0 job menu.gif'); ShowMessage(image1.Picture.Graphic.ClassName); // this says "TdxSmartImage" (image1.Picture.Graphic as TGIFImage).Animate := true; end; 。然后,您应该使用li而不是$x。最后,宏位于%x部分内(请参阅MIPS)。 (另请注意,QtSpim不支持这些宏。但是,MARS支持它们。)

.text