UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 51984

EDK MicroBlaze : ハーフワード反転の MicroBlaze 命令による保存についての説明

説明

SHR 命令を使用すると、エンディアンが入れ替わり、もう一方のハーフワードに結果が保存されます (もとのハーフワードの隣のワード)。


これは予期動作ですか。

コードの抜粋


  typedef union
  {
    struct
   {
        unsigned short int16e;
        unsigned short int16f;
   } structure;
   unsigned int tab[1];
  } structTest_t;

    structTest_t lit2big;
 lit2big.structure.int16e= 0xf055;
 lit2big.structure.int16f= 0xf066;
shr(&lit2big.structure.int16e, 0xad0b);
// print it:
int16e = F055 <- wanted to swap and assign there but didn't
int16f = BAD <- this other got swapped
 

ソリューション

(UG081) によると、これは予期動作です。
------------------------
If the R bit is set, a halfword reversed memory location is used and the two bytes in the halfword are reversed, storing data with the opposite endianness of the endianness defined by C_ENDIANNESS and the E bit (if virtual protected mode is enabled).
(訳 : R ビットが設定されていると場合、ハーフワード反転したメモリ ロケーションが使用され、またこのハーフワードにある 2 バイトが反転されて、C_ENDIANNESS および E ビットで定義されているエンディアンとは逆のエンディアンでデータが保存されます (仮想保護モードが有効になっている場合)。)------------------------
この「ハーフワード反転したメモリ ロケーションが使用される」というのは予期動作です。

C_USE_REORDER_INSTR = 1 という設定が使用されていることを確認してください。これはデフォルトでそうなるので、デフォルトで使用すべきものです。

これが 0 になっている場合は、バイト反転なしで保存されます。
AR# 51984
作成日 09/25/2012
最終更新日 10/02/2014
ステータス アクティブ
タイプ 一般
IP
  • Microblaze