|
代码:
#include <math.h>
float tstA = 3.1;
float tstB = 5.5;
float tstC;
void main( void )
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
while(1);
tstC = tstA*tstB;
}
汇编对应的浮点计算代码为:
MOV DR0,tstB(0x0D4D)
MOV DR4,tstA(0x0D49)
LCALL C?FPMUL(C:0x000E)
C?FPMUL:
MOV DMAIR(0xED),#DMA_FPMUL(0x1E)
RET
手册上的说明:
问题是:
假设线程切换时保存了DR0和DR4,但不保存DMAIR的值,
请问运行库函数[ LCALL C?FPMUL(C:0x000E) ] 结果是正确的吗?
这里不考虑tstA, tstB, tstC 的读写线程安全问题。
因手头没有芯片进行测试,烦请高手帮忙测试解答。:handshake
|
|