我想与C编译器链接。
- 使用MIPS将值传递给函数的约定是什么
- 是否有编码约定或类似RFC的文档
没有正确的方法,使用汇编语言可以随心所欲。
但是,例如,如果你试图与C编译器链接,为什么不尝试使用现有的编译器呢?它显然可以创建与同一编译器生成的其他对象链接的对象。
extern unsigned int more_fun ( unsigned int a, unsigned int b );
unsigned int fun ( unsigned int a, unsigned int b )
{
unsigned int c;
c = more_fun(a,b+7);
return(c+a+5);
}
这是我产生的(带有某些标志),对象没有链接。。。
00000000 <fun>:
0: 27bdffe8 addiu sp,sp,-24
4: 24a50007 addiu a1,a1,7
8: afbf0014 sw ra,20(sp)
c: afb00010 sw s0,16(sp)
10: 0c000000 jal 0 <fun>
14: 00808025 move s0,a0
18: 8fbf0014 lw ra,20(sp)
1c: 26100005 addiu s0,s0,5
20: 02021021 addu v0,s0,v0
24: 8fb00010 lw s0,16(sp)
28: 03e00008 jr ra
2c: 27bd0018 addiu sp,sp,24
我认为这说明了这一点,并为您提供了一种方法来计算更复杂的参数或返回值。我更喜欢编译和反汇编,而不是编译到汇编。更容易阅读和实际查看所产生的内容。YMMV。