EDK MicroBlaze:存储半字反向MicroBlaze指令的解释

描述

当我使用SHR指令时,它会交换字节序并将结果存储在另一半字(原始半字旁边的字)中。


这是预期的行为吗?

代码段:


typedef union
{
结构
{
unsigned short int16e;
unsigned short int16f;
} 结构体;
unsigned int tab [1];
} structTest_t;

structTest_t lit2big;
lit2big.structure.int16e = 0xf055;
lit2big.structure.int16f = 0xf066;
shr(&lit2big.structure.int16e,0xad0b);
//打印它:
int16e = F055 < - 想交换并分配那里但没有
int16f = BAD < - 另一个被交换了

根据( UG081) ,这是预期的行为:
------------------------
如果R 位置1,则使用半字反转存储器位置 ,并且半字中的两个字节被反转,存储具有由C_ENDIANNESS和E位定义的字节序的相反字节序的数据(如果启用了虚拟保护模式)。
------------------------
“使用半字反转内存位置 ”是预期的。

确保在设置中使用C_USE_REORDER_INSTR = 1 - 默认情况下它处于启用状态,因此默认情况下应该使用它。

如果= 0则它是没有字节反转的普通商店。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 13:13:52 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它