MIPS 有编码约定吗?
Is there a coding convention to MIPS?
我想链接一个 C 编译器。
- 使用 MIPS 将值传递给函数的约定是什么?
- 是否有编码约定或类似 RFC 的文档?
没有正确的方法,汇编语言可以为所欲为。
但是,如果您尝试 link 使用 C 编译器,那么为什么不尝试使用现有的编译器呢?它显然可以创建 link 与同一编译器创建的其他对象的对象。
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);
}
这是我的产品(带有某些标志),对象不是 linked...
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
我认为这很清楚,并为您提供了一种方法来计算更复杂的参数或 return 值。我更喜欢编译和反汇编编译到汇编。更容易阅读并实际看到生成的内容。 YMMV.
我想链接一个 C 编译器。
- 使用 MIPS 将值传递给函数的约定是什么?
- 是否有编码约定或类似 RFC 的文档?
没有正确的方法,汇编语言可以为所欲为。
但是,如果您尝试 link 使用 C 编译器,那么为什么不尝试使用现有的编译器呢?它显然可以创建 link 与同一编译器创建的其他对象的对象。
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);
}
这是我的产品(带有某些标志),对象不是 linked...
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
我认为这很清楚,并为您提供了一种方法来计算更复杂的参数或 return 值。我更喜欢编译和反汇编编译到汇编。更容易阅读并实际看到生成的内容。 YMMV.