1.请用汇编语言实现 以下C函数的功能。
int test( int a, int b, int c, int d ){
return (a*b+c-d);
}
int main(int args)
{
int nResult = 0;
int nTemp = 0;
int a = 2;
int b = 3;
int c = 4;
int d = 5;
__asm{
MUL nTemp,a,b
ADD nTemp,nTemp,c
SUB nResult,nTemp,d
}
return nResult;
}
或者
test.c
void test(int a, int b, int c, int d);
int main(int args)
{
test(2,3,4,5);
return 0;
}
compute.s
EXPORT test
test PROC
MUL r4,r0,r1
ADD r4,r4,r2
SUB r0,r4,r3
MOV pc,lr
ENDP
//结果保存在R0中,
2. 下面是一个汇编程序调用C程序的例
程,请问程序中有何错误? 如果没有错
误,输出结果是result = ?
int mycompute( int a, int b , int c )
{
return ( a*(b+c));
}
IMPORT mycompute
test2 PROC
PUSH {r0-r10,lr}
MOV r1,#2
MOV r0,#1
BL mycompute
MOV r10,r0
MOV r1,r10
ADR r0,|L1.120|
BL __2printf
MOV r0,#0
POP {r0-r10,pc}
ENDP
|L1.120|
DCB "result = 0x%x",0
DCB 0
DCB 0
3. FIQ模式与IRQ模式相比,多了R8-R12这几个寄存器,
这么设计的意义在于什么?