部件号:LAUNCHXL-F2.8377万S
工具/软件:Code Composer Studio
您好,
我想从汇编器函数返回两个无符号int值。 这是否可行?
如果可能,第二个无符号int值存储在何处?(第一个存储在AL寄存器中)
已参考SPRU514L:
6.被调用的函数返回一个值。 它按照下列惯例存入一个登记册:
16位整数值AL
32位整数值符合
64位整数值ACC/P
32位指针XAR4
结构参考XAR6
//希望类似这样的内容可以返回两个值
//?? 它的外观如何
extern unsigned int unexfunc( unsigned int a, unsigned int b);
asmvalue = asmfunc (99.95万);
如果无法返回两个值,请考虑 以下问题。
我编写了一个汇编器函数,其中保存了两个整数值。 一个在XAR4寄存器中,一个在XAR5寄存器中。
如何访问我的c代码中的这些寄存器?
如果我无法访问这些寄存器,我可以在哪里保存值并获取对其的访问权限?
.global _asmfunc _asmfunc: ADDB SP,#3; MOV *-SP[1],AL ;| TBPRD MOV *-SP[2],AH ;| TBPRDHR ;以下计算对于问题 UI16TOF32 R2H,*-SP[1] UI16TOF32 R3H,*-SP[2] MPYF32 R4H,0.5 ,R2H不重要; R4H = 0.5 * R2H | OPTPRD = R4H NOP F32TOUI16 R5H,R4H;| RH5 ist Uint (OH * TBPRD) NOP NOP MOV32 XAR1,R5H UI16TOF32 R5H,R5H;| R1H ist float (OT * TBPRD,N3H,N3H,ROP) 0.5 R5H = 0.5 * R3H | OD* TBPRDHR NOP NOP MPYF32 R1H,R1H,6.5536万.0 ;|temp*6.5536万 NOP NOP ADDF32 R1H,R1H,R7H;TEMP*6.5536万+OD*TBPRDHROP NOP NOP NOP NOP MOV32 XAR2,R1H NOP;任何指令
;保存值 MOV32 XAR4, R0H;将值保存在XAR4 MOV32 XAR5, R1H中;将值保存在XAR5中
LRETR
// C code extern unmexfunc( unsigned int a, unsigned int b); // asmfunc (99.95万); //如何访问XAR4或XAR5? // unsigned int value_a; // unsigned int value_B; // value_a = XAR4 // value_B = XAR5
我注意到:
为TMS320C28x DSP创建C调用汇编函数的简便方法
TMS320C28x优化C C++编译器