_REV在Sys实现,还是得要调用固件库,方便兼容MDK/GCC两家编译器
This commit is contained in:
parent
ba51c2b068
commit
1739720eb1
36
Sys.cpp
36
Sys.cpp
|
@ -559,3 +559,39 @@ void TSys::Trace(int times) const
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************** REV ********************************/
|
||||||
|
|
||||||
|
uint _REV(uint value) { return __REV(value); }
|
||||||
|
ushort _REV16(ushort value) { return __REV16(value); }
|
||||||
|
|
||||||
|
/*#if defined ( __CC_ARM )
|
||||||
|
__asm uint _REV(uint value)
|
||||||
|
{
|
||||||
|
rev16 r0, r0
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
__asm ushort _REV16(ushort value)
|
||||||
|
{
|
||||||
|
rev16 r0, r0
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif defined ( __GNUC__ )
|
||||||
|
uint32_t __REV(uint32_t value)
|
||||||
|
{
|
||||||
|
uint32_t result = 0;
|
||||||
|
|
||||||
|
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value));
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t __REV16(uint16_t value)
|
||||||
|
{
|
||||||
|
uint32_t result = 0;
|
||||||
|
|
||||||
|
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value));
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
#endif*/
|
||||||
|
|
6
Sys.h
6
Sys.h
|
@ -115,6 +115,12 @@ extern TSys Sys; //创建一个全局的Sys对象 会在main函数之前执行
|
||||||
//#include "Time.h"
|
//#include "Time.h"
|
||||||
#include "Interrupt.h"
|
#include "Interrupt.h"
|
||||||
|
|
||||||
|
//extern uint32_t __REV(uint32_t value);
|
||||||
|
//extern uint32_t __REV16(uint16_t value);
|
||||||
|
|
||||||
|
uint _REV(uint value);
|
||||||
|
ushort _REV16(ushort value);
|
||||||
|
|
||||||
#endif //_Sys_H_
|
#endif //_Sys_H_
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
36
Type.cpp
36
Type.cpp
|
@ -714,39 +714,3 @@ void ByteArray::Write(UInt64 value, int index)
|
||||||
{
|
{
|
||||||
Copy(index, (byte*)&value, sizeof(UInt64));
|
Copy(index, (byte*)&value, sizeof(UInt64));
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** REV ********************************/
|
|
||||||
|
|
||||||
//uint _REV(uint value) { return __REV(value); }
|
|
||||||
//ushort _REV16(ushort value) { return __REV16(value); }
|
|
||||||
|
|
||||||
#if defined ( __CC_ARM )
|
|
||||||
__asm uint _REV(uint value)
|
|
||||||
{
|
|
||||||
rev16 r0, r0
|
|
||||||
bx lr
|
|
||||||
}
|
|
||||||
|
|
||||||
__asm ushort _REV16(ushort value)
|
|
||||||
{
|
|
||||||
rev16 r0, r0
|
|
||||||
bx lr
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined ( __GNUC__ )
|
|
||||||
uint32_t __REV(uint32_t value)
|
|
||||||
{
|
|
||||||
uint32_t result=0;
|
|
||||||
|
|
||||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t __REV16(uint16_t value)
|
|
||||||
{
|
|
||||||
uint32_t result=0;
|
|
||||||
|
|
||||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
6
Type.h
6
Type.h
|
@ -20,12 +20,6 @@ typedef long long Int64;
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
using namespace ::std;
|
using namespace ::std;
|
||||||
|
|
||||||
//extern uint32_t __REV(uint32_t value);
|
|
||||||
//extern uint32_t __REV16(uint16_t value);
|
|
||||||
|
|
||||||
uint _REV(uint value);
|
|
||||||
ushort _REV16(ushort value);
|
|
||||||
|
|
||||||
class String;
|
class String;
|
||||||
class Type;
|
class Type;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue