差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
arm:sitara:pru [2020/06/06 23:53]
kimu_shu [テーブル]
arm:sitara:pru [2020/06/07 00:24]
kimu_shu [テーブル]
ライン 21: ライン 21:
 ===== 命令セット ===== ===== 命令セット =====
  
-^ カテゴリ ​ ^ 命令 ​                                                                                                                                      ^ 説明 ​                                           ^ 動作 ​                                                                                                                                                                                                                                                                                                                                                                                                                  ​^ サイクル数 ​ +^ カテゴリ ​ ^ 命令 ​                                                                                                                                      ^ 説明 ​                                           ^ 動作 ​                                                                                                                                                                                                                                                                                                                                                                                                          ​^ サイクル数 ​             
-| 算術 ​   | ADD REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Add                          | REG1 = REG2 + OP(255)\\ %%carry = (( REG2 + OP(255) ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                                       ​       +| 算術 ​   | ADD REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Add                          | REG1 = REG2 + OP(255)\\ %%carry = (( REG2 + OP(255) ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                               ​                   
-| :::   | ADC REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Add with Carry               | REG1 = REG2 + OP(255) + carry\\ %%carry = (( REG2 + OP(255) + carry ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                       ​       +| :::   | ADC REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Add with Carry               | REG1 = REG2 + OP(255) + carry\\ %%carry = (( REG2 + OP(255) + carry ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                               ​                   
-| :::   | SUB REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Subtract ​                    | REG1 = REG2 - OP(255)\\ %%carry = (( REG2 - OP(255) ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                                       ​       +| :::   | SUB REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Subtract ​                    | REG1 = REG2 - OP(255)\\ %%carry = (( REG2 - OP(255) ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                               ​                   
-| :::   | SUC REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Subtract with Carry          | REG1 = REG2 - OP(255) - carry\\ %%carry = (( REG2 - OP(255) - carry ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                       ​       +| :::   | SUC REG1, REG2, OP(255) ​                                                                                                                 | Unsigned Integer Subtract with Carry          | REG1 = REG2 - OP(255) - carry\\ %%carry = (( REG2 - OP(255) - carry ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                               ​                   
-| :::   | RSB REG1, REG2, OP(255) ​                                                                                                                 | Reverse Unsigned Integer Subtract ​            | REG1 = OP(255) - REG2\\ %%carry = (( OP(255) - REG2 ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                                       ​       +| :::   | RSB REG1, REG2, OP(255) ​                                                                                                                 | Reverse Unsigned Integer Subtract ​            | REG1 = OP(255) - REG2\\ %%carry = (( OP(255) - REG2 ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                               ​                   
-| :::   | RSC REG1, REG2, OP(255) ​                                                                                                                 | Reverse Unsigned Integer Subtract with Carry  | REG1 = OP(255) - REG2 - carry\\ %%carry = (( OP(255) - REG2 - carry ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                                       ​       +| :::   | RSC REG1, REG2, OP(255) ​                                                                                                                 | Reverse Unsigned Integer Subtract with Carry  | REG1 = OP(255) - REG2 - carry\\ %%carry = (( OP(255) - REG2 - carry ) >> bitwidth(REG1)) & 1%%                                                                                                                                                                                                                                                                                                               ​                   
-| 論理 ​   | LSL REG1, REG2, OP(31) ​                                                                                                                  | Logical Shift Left                            | %%REG1 = REG2 << (OP(31) & 0x1f)%% ​                                                                                                                                                                                                                                                                                                                                                                                  ​       +| 論理 ​   | LSL REG1, REG2, OP(31) ​                                                                                                                  | Logical Shift Left                            | %%REG1 = REG2 << (OP(31) & 0x1f)%% ​                                                                                                                                                                                                                                                                                                                                                                          ​                   
-| :::   | LSR REG1, REG2, OP(31) ​                                                                                                                  | Logical Shift Right                           | %%REG1 = REG2 >> (OP(31) & 0x1f)%% ​                                                                                                                                                                                                                                                                                                                                                                                  ​       +| :::   | LSR REG1, REG2, OP(31) ​                                                                                                                  | Logical Shift Right                           | %%REG1 = REG2 >> (OP(31) & 0x1f)%% ​                                                                                                                                                                                                                                                                                                                                                                          ​                   
-| :::   | AND REG1, REG2, OP(255) ​                                                                                                                 | Bitwise AND                                   | REG1 = REG2 & OP(255) ​                                                                                                                                                                                                                                                                                                                                                                                                      +| :::   | AND REG1, REG2, OP(255) ​                                                                                                                 | Bitwise AND                                   | REG1 = REG2 & OP(255) ​                                                                                                                                                                                                                                                                                                                                                                                                          
-| :::   | OR  REG1, REG2, OP(255) ​                                                                                                                 | Bitwise OR                                    | REG1 = REG2 %%|%% OP(255) ​                                                                                                                                                                                                                                                                                                                                                                                                  +| :::   | OR  REG1, REG2, OP(255) ​                                                                                                                 | Bitwise OR                                    | REG1 = REG2 %%|%% OP(255) ​                                                                                                                                                                                                                                                                                                                                                                                                      
-| :::   | XOR REG1, REG2, OP(255) ​                                                                                                                 | Bitwise XOR                                   | REG1 = REG2 %%^%% OP(255) ​                                                                                                                                                                                                                                                                                                                                                                                                  +| :::   | XOR REG1, REG2, OP(255) ​                                                                                                                 | Bitwise XOR                                   | REG1 = REG2 %%^%% OP(255) ​                                                                                                                                                                                                                                                                                                                                                                                                      
-| :::   | NOT REG1, REG2                                                                                                                           | Bitwise NOT                                   | REG1 = ~REG2                                                                                                                                                                                                                                                                                                                                                                                                         ​       +| :::   | NOT REG1, REG2                                                                                                                           | Bitwise NOT                                   | REG1 = ~REG2                                                                                                                                                                                                                                                                                                                                                                                                 ​                   
-| 算術 ​   | MIN REG1, REG2, OP(255) ​                                                                                                                 | Copy Minimum ​                                 | REG1 = (REG2 < OP(255)) ? REG2 : OP(255) ​                                                                                                                                                                                                                                                                                                                                                                            ​       +| 算術 ​   | MIN REG1, REG2, OP(255) ​                                                                                                                 | Copy Minimum ​                                 | REG1 = (REG2 < OP(255)) ? REG2 : OP(255) ​                                                                                                                                                                                                                                                                                                                                                                    ​                   
-| :::   | MAX REG1, REG2, OP(255) ​                                                                                                                 | Copy Maximum ​                                 | REG1 = (REG2 > OP(255)) ? REG2 : OP(255) ​                                                                                                                                                                                                                                                                                                                                                                            ​       +| :::   | MAX REG1, REG2, OP(255) ​                                                                                                                 | Copy Maximum ​                                 | REG1 = (REG2 > OP(255)) ? REG2 : OP(255) ​                                                                                                                                                                                                                                                                                                                                                                    ​                   
-| 論理 ​   | CLR REG1, REG2, OP(31) ​                                                                                                                  | Clear Bit                                     | %%REG1 = REG2 & ~(1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                                  +| 論理 ​   | CLR REG1, REG2, OP(31) ​                                                                                                                  | Clear Bit                                     | %%REG1 = REG2 & ~(1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                                      
-| :::   | CLR REG1, OP(31) ​                                                                                                                        | :::                                           | %%REG1 &= ~(1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                                        +| :::   | CLR REG1, OP(31) ​                                                                                                                        | :::                                           | %%REG1 &= ~(1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                                            
-| :::   | CLR REG1, Rn.tx                                                                                                                          | :::                                           | REG1 = Rn & ~Rn.tx ​                                                                                                                                                                                                                                                                                                                                                                                                  ​       +| :::   | CLR REG1, Rn.tx                                                                                                                          | :::                                           | REG1 = Rn & ~Rn.tx ​                                                                                                                                                                                                                                                                                                                                                                                          ​                   
-| :::   | CLR Rn.tx                                                                                                                                | :::                                           | Rn &= ~Rn.tx ​                                                                                                                                                                                                                                                                                                                                                                                                        ​       +| :::   | CLR Rn.tx                                                                                                                                | :::                                           | Rn &= ~Rn.tx ​                                                                                                                                                                                                                                                                                                                                                                                                ​                   
-| :::   | SET REG1, REG2, OP(31) ​                                                                                                                  | Set Bit                                       | %%REG1 = REG2 | (1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                            ​       +| :::   | SET REG1, REG2, OP(31) ​                                                                                                                  | Set Bit                                       | %%REG1 = REG2 | (1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                    ​                   
-| :::   | SET REG1, OP(31) ​                                                                                                                        | :::                                           | %%REG1 |= (1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                                  ​       +| :::   | SET REG1, OP(31) ​                                                                                                                        | :::                                           | %%REG1 |= (1 << (OP(31) & 0x1f))%% ​                                                                                                                                                                                                                                                                                                                                                                          ​                   
-| :::   | SET REG1, Rn.tx                                                                                                                          | :::                                           | REG1 = Rn %%|%% Rn.tx                                                                                                                                                                                                                                                                                                                                                                                                       +| :::   | SET REG1, Rn.tx                                                                                                                          | :::                                           | REG1 = Rn %%|%% Rn.tx                                                                                                                                                                                                                                                                                                                                                                                                           
-| :::   | SET Rn.tx                                                                                                                                | :::                                           | Rn %%|%%= Rn.tx                                                                                                                                                                                                                                                                                                                                                                                                             +| :::   | SET Rn.tx                                                                                                                                | :::                                           | Rn %%|%%= Rn.tx                                                                                                                                                                                                                                                                                                                                                                                                                 
-| 特殊 ​   | LMBD REG1, REG2, OP(255) ​                                                                                                                | Left-Most Bit Detect ​                         | OP(255)&​1が0の場合 → REG1 = CountLeadingOnes(REG2)\\ OP(255)&​1が1の場合 → REG1 = CountLeadingZeros(REG2) ​                                                                                                                                                                                                                                                                                                                    ​       +| 特殊 ​   | LMBD REG1, REG2, OP(255) ​                                                                                                                | Left-Most Bit Detect ​                         | OP(255)&​1が0の場合 → REG1 = CountLeadingOnes(REG2)\\ OP(255)&​1が1の場合 → REG1 = CountLeadingZeros(REG2) ​                                                                                                                                                                                                                                                                                                            ​                   
-| :::   | NOPn REG1, REG2, OP(255) ​                                                                                                                | NULL Operation ​                               | 何もしない or 実装依存の動作 ​                                                                                                                                                                                                                                                                                                                                                                                                    ​       +| :::   | NOPn REG1, REG2, OP(255) ​                                                                                                                | NULL Operation ​                               | 何もしない or 実装依存の動作 ​                                                                                                                                                                                                                                                                                                                                                                                            ​                   
-|       ​| ​                                                                                                                                         |                                               ​| ​                                                                                                                                                                                                                                                                                                                                                                                                                            +|       ​| ​                                                                                                                                         |                                               ​| ​                                                                                                                                                                                                                                                                                                                                                                                                                                
-| 転送 ​   | MOV REG1, OP(0xFFFFFFFF) ​                                                                                                                | Copy Value                                    | REG1 = OP(0xFFFFFFFF)\\ ただしOPが即値の場合、LDIまたはLDI×2個に変換される ​                                                                                                                                                                                                                                                                                                                                                              ​       +| 転送 ​   | MOV REG1, OP(0xFFFFFFFF) ​                                                                                                                | Copy Value                                    | REG1 = OP(0xFFFFFFFF)\\ ただしOPが即値の場合、LDIまたはLDI×2個に変換される ​                                                                                                                                                                                                                                                                                                                                                      ​                   
-| :::   | LDI REG1, IM(65535) ​                                                                                                                     | Load Immediate ​                               | REG1 = IM(65535) ​                                                                                                                                                                                                                                                                                                                                                                                                    ​       +| :::   | LDI REG1, IM(65535) ​                                                                                                                     | Load Immediate ​                               | REG1 = IM(65535) ​                                                                                                                                                                                                                                                                                                                                                                                            ​                   
-| :::   | MVIB [*][&​][--]REG1[++],​ [*][&​][--]REG2[++]\\ MVIW [*][&​][--]REG1[++],​ [*][&​][--]REG2[++]\\ MVID [*][&​][--]REG1[++],​ [*][&​][--]REG2[++] ​ | Move Register File Indirect ​                  | レジスタまたはレジスタポインタ間接での値のコピー。\\ ポインタの場合プリデクリメント/​ポストインクリメントを付けられる。\\ 入力が命令の幅(B=8,​W=16,​D=32)より小さい場合はゼロ拡張される。\\ なおレジスタポインタはr1.b0,​ r1.b1, r1.b2, r1.b3のみが使用可能。 ​                                                                                                                                                                                                                                                              ​       +| :::   | MVIB [*][&​][--]REG1[++],​ [*][&​][--]REG2[++]\\ MVIW [*][&​][--]REG1[++],​ [*][&​][--]REG2[++]\\ MVID [*][&​][--]REG1[++],​ [*][&​][--]REG2[++] ​ | Move Register File Indirect ​                  | レジスタまたはレジスタポインタ間接での値のコピー。\\ ポインタの場合プリデクリメント/​ポストインクリメントを付けられる。\\ 入力が命令の幅(B=8,​W=16,​D=32)より小さい場合はゼロ拡張される。\\ なおレジスタポインタはr1.b0,​ r1.b1, r1.b2, r1.b3のみが使用可能。 ​                                                                                                                                                                                                                                                      ​                   
-| :::   | LBBO [&​]REG1,​ Rn2, OP(255), IM(124) ​                                                                                                     | Load Byte Burst                               | memcpy( offset(REG1),​ Rn2+OP(255),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                         ​       +| :::   | LBBO [&​]REG1,​ Rn2, OP(255), IM(124) ​                                                                                                     | Load Byte Burst                               | memcpy( offset(REG1),​ Rn2+OP(255),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                 ​                   
-| :::   | LBBO [&​]REG1,​ Rn2, OP(255), bn                                                                                                           | :::                                           | memcpy( offset(REG1),​ Rn2+OP(255),​ bn )                                                                                                                                                                                                                                                                                                                                                                                     +| :::   | LBBO [&​]REG1,​ Rn2, OP(255), bn                                                                                                           | :::                                           | memcpy( offset(REG1),​ Rn2+OP(255),​ bn )                                                                                                                                                                                                                                                                                                                                                                                         
-| :::   | SBBO [&​]REG1,​ Rn2, OP(255), IM(124) ​                                                                                                     | Store Byte Burst                              | memcpy( Rn2+OP(255),​ offset(REG1),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                         ​       +| :::   | SBBO [&​]REG1,​ Rn2, OP(255), IM(124) ​                                                                                                     | Store Byte Burst                              | memcpy( Rn2+OP(255),​ offset(REG1),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                 ​                   
-| :::   | SBBO [&​]REG1,​ Rn2, OP(255), bn                                                                                                           | :::                                           | memcpy( Rn2+OP(255),​ offset(REG1),​ bn )                                                                                                                                                                                                                                                                                                                                                                                     +| :::   | SBBO [&​]REG1,​ Rn2, OP(255), bn                                                                                                           | :::                                           | memcpy( Rn2+OP(255),​ offset(REG1),​ bn )                                                                                                                                                                                                                                                                                                                                                                                         
-| :::   | LBCO [&​]REG1,​ Cn2, OP(255), IM(124) ​                                                                                                     | Load Byte Burst with Constant Table Offset ​   | memcpy( offset(REG1),​ Cn2+OP(255),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                         ​       +| :::   | LBCO [&​]REG1,​ Cn2, OP(255), IM(124) ​                                                                                                     | Load Byte Burst with Constant Table Offset ​   | memcpy( offset(REG1),​ Cn2+OP(255),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                 ​                   
-| :::   | LBCO [&​]REG1,​ Cn2, OP(255), bn                                                                                                           | :::                                           | memcpy( offset(REG1),​ Cn2+OP(255),​ bn )                                                                                                                                                                                                                                                                                                                                                                                     +| :::   | LBCO [&​]REG1,​ Cn2, OP(255), bn                                                                                                           | :::                                           | memcpy( offset(REG1),​ Cn2+OP(255),​ bn )                                                                                                                                                                                                                                                                                                                                                                                         
-| :::   | SBCO [&​]REG1,​ Cn2, OP(255), IM(124) ​                                                                                                     | Store Byte Burst with Constant Table Offset ​  | memcpy( Cn2+OP(255),​ offset(REG1),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                         ​       +| :::   | SBCO [&​]REG1,​ Cn2, OP(255), IM(124) ​                                                                                                     | Store Byte Burst with Constant Table Offset ​  | memcpy( Cn2+OP(255),​ offset(REG1),​ IM(124) )                                                                                                                                                                                                                                                                                                                                                                 ​                   
-| :::   | SBCO REG1, Cn2, OP(255), bn                                                                                                              | :::                                           | memcpy( Cn2+OP(255),​ offset(REG1),​ bn )                                                                                                                                                                                                                                                                                                                                                                                     +| :::   | SBCO REG1, Cn2, OP(255), bn                                                                                                              | :::                                           | memcpy( Cn2+OP(255),​ offset(REG1),​ bn )                                                                                                                                                                                                                                                                                                                                                                                         
-| :::   | ZERO IM(123), IM(124) ​                                                                                                                   | Clear Register Space                          | memset( IM(123), 0, IM(124) )                                                                                                                                                                                                                                                                                                                                                                                        |  1     ​+| :::   | ZERO IM(123), IM(124) ​                                                                                                                   | Clear Register Space                          | memset( IM(123), 0, IM(124) )                                                                                                                                                                                                                                                                                                                                                                                |  1                 ​
-| :::   | ZERO &REG1, IM(124) ​                                                                                                                     | :::                                           | memset( &REG1, 0, IM(124) )                                                                                                                                                                                                                                                                                                                                                                                          |  1     ​+| :::   | ZERO &REG1, IM(124) ​                                                                                                                     | :::                                           | memset( &REG1, 0, IM(124) )                                                                                                                                                                                                                                                                                                                                                                                  |  1                 ​
-| :::   | FILL IM(123), IM(124) ​                                                                                                                   | Fill Register Space                           | memset( IM(123), 0xFF, IM(124) )                                                                                                                                                                                                                                                                                                                                                                                     ​|  1     ​+| :::   | FILL IM(123), IM(124) ​                                                                                                                   | Fill Register Space                           | memset( IM(123), 0xFF, IM(124) )                                                                                                                                                                                                                                                                                                                                                                             ​|  1                 ​
-| :::   | FILL &REG1, IM(124) ​                                                                                                                     | :::                                           | memset( &REG1, 0xFF, IM(124) )                                                                                                                                                                                                                                                                                                                                                                                       ​|  1     ​+| :::   | FILL &REG1, IM(124) ​                                                                                                                     | :::                                           | memset( &REG1, 0xFF, IM(124) )                                                                                                                                                                                                                                                                                                                                                                               ​|  1                 ​
-| :::   | XIN IM(253), REG, IM(124) ​                                                                                                               | Register Transfer In                          | SPP.SHIFT_EN==0の場合\\ memset( offset(REG1), &​Device[IM(253)] + offset(REG1), IM(124) )\\ SPP.SHIFT_EN==1の場合\\ memset( offset(REG1), &​Device[IM(253)] + wrap(offset(REG1) + R0.b0*4), IM(124) )                                                                                                                                                                                                                        |  1     ​+| :::   | XIN IM(253), REG, IM(124) ​                                                                                                               | Register Transfer In                          | SPP.SHIFT_EN==0の場合\\ memset( offset(REG), &​Device[IM(253)] + offset(REG), IM(124) )\\ SPP.SHIFT_EN==1の場合\\ memset( offset(REG), &​Device[IM(253)] + wrap(offset(REG) + R0.b0*4), IM(124) )                                                                                                                                                                                                                    |  1\\ (ScratchPad)  ​
-| :::   | XIN IM(253), REG, bn                                                                                                                     | :::                                           | IM(124)をbnに読み替え ​                                                                                                                                                                                                                                                                                                                                                                                                     |  1     ​+| :::   | XIN IM(253), REG, bn                                                                                                                     | :::                                           | IM(124)をbnに読み替え ​                                                                                                                                                                                                                                                                                                                                                                                             |  1\\ (ScratchPad)  ​
-| :::   | XOUT IM(253), REG, IM(124) ​                                                                                                              | Register Transfer Out                         | SPP.SHIFT_EN==0の場合\\ memset( &​Device[IM(253)] + offset(REG1), offset(REG1), IM(124) )\\ SPP.SHIFT_EN==1の場合\\ memset( &​Device[IM(253)] + wrap(offset(REG1) + R0.b0*4), offset(REG1), IM(124) )                                                                                                                                                                                                                        |  1     ​+| :::   | XOUT IM(253), REG, IM(124) ​                                                                                                              | Register Transfer Out                         | SPP.SHIFT_EN==0の場合\\ memset( &​Device[IM(253)] + offset(REG), offset(REG), IM(124) )\\ SPP.SHIFT_EN==1の場合\\ memset( &​Device[IM(253)] + wrap(offset(REG) + R0.b0*4), offset(REG), IM(124) )                                                                                                                                                                                                                    |  1\\ (ScratchPad)  ​
-| :::   | XOUT IM(253), REG, bn                                                                                                                    | :::                                           | IM(124)をbnに読み替え ​                                                                                                                                                                                                                                                                                                                                                                                                     |  1     ​+| :::   | XOUT IM(253), REG, bn                                                                                                                    | :::                                           | IM(124)をbnに読み替え ​                                                                                                                                                                                                                                                                                                                                                                                             |  1\\ (ScratchPad)  ​
-| :::   | XCHG IM(253), REG, IM(124) ​                                                                                                              | Register Transfer Exchange ​                   | SPP.SHIFT_EN==0の場合\\ memset( temp, offset(REG1), IM(124) )\\ memset( offset(REG1), &​Device[IM(253)] + offset(REG1), IM(124) )\\ memset( &​Device[IM(253)] + offset(REG1), temp, IM(124) )\\ SPP.SHIFT_EN==1の場合\\ memset( temp, offset(REG1), IM(124) )\\ memset( offset(REG1), &​Device[IM(253)] + wrap(offset(REG1) + R0.b0*4), IM(124) )\\ memset( &​Device[IM(253)] + wrap(offset(REG1) + R0.b0*4), temp, IM(124) )  |  1     ​+| :::   | XCHG IM(253), REG, IM(124) ​                                                                                                              | Register Transfer Exchange ​                   | SPP.SHIFT_EN==0の場合\\ memset( temp, offset(REG), IM(124) )\\ memset( offset(REG), &​Device[IM(253)] + offset(REG), IM(124) )\\ memset( &​Device[IM(253)] + offset(REG), temp, IM(124) )\\ SPP.SHIFT_EN==1の場合\\ memset( temp, offset(REG), IM(124) )\\ memset( offset(REG), &​Device[IM(253)] + wrap(offset(REG) + R0.b0*4), IM(124) )\\ memset( &​Device[IM(253)] + wrap(offset(REG) + R0.b0*4), temp, IM(124) )  |  1\\ (ScratchPad)  ​
-| :::   | XCHG IM(253), REG, bn                                                                                                                    | :::                                           | IM(124)をbnに読み替え ​                                                                                                                                                                                                                                                                                                                                                                                                     |  1     ​|+| :::   | XCHG IM(253), REG, bn                                                                                                                    | :::                                           | IM(124)をbnに読み替え ​                                                                                                                                                                                                                                                                                                                                                                                             |  1\\ (ScratchPad) ​ | 
 +| :::   | SXIN IM(253), REG, IM(124) ​                                                                                                              | Register and Status Transfer In               | XINのStatus転送あり版 (???) ​                                                                                                                                                                                                                                                                                                                                                                                       |                    | 
 +| :::   | SXIN IM(253), REG, bn                                                                                                                    | :::                                           | :::                                                                                                                                                                                                                                                                                                                                                                                                          |                    | 
 +| :::   | SXOUT IM(253), REG, IM(124) ​                                                                                                             | Register and Status Transfer Out              | XOUTのStatus転送あり版 (???) ​                                                                                                                                                                                                                                                                                                                                                                                      ​| ​                   | 
 +| :::   | SXOUT IM(253), REG, bn                                                                                                                   | :::                                           | :::                                                                                                                                                                                                                                                                                                                                                                                                          |                    | 
 +| :::   | SXCHG IM(253), REG, IM(124) ​                                                                                                             | Register and Status Transfer Exchange ​        | XCHGのStatus転送あり版 (???) ​                                                                                                                                                                                                                                                                                                                                                                                      ​| ​                   | 
 +| :::   | SXCHG IM(253), REG, bn                                                                                                                   | :::                                           | :::                                                                                                                                                                                                                                                                                                                                                                                                          |                    | 
 +| フロー ​  | JMP OP(65535) ​                                                                                                                           | Unconditional Jump                            | PRU Instruction Pointer = OP(65535) ​                                                                                                                                                                                                                                                                                                                                                                         |                    | 
 +| :::   | JAL REG1, OP(65535) ​                                                                                                                     | Unconditional Jump and Link                   | REG1 = Current PRU Instruction Pointer + 1\\ PRU Instruction Pointer = OP(65535) ​                                                                                                                                                                                                                                                                                                                            ​| ​                   | 
 +| :::   | CALL OP(65535) ​                                                                                                                          | Call Procedure ​                               | JAL r30.w0, OP(65535) に相当 ​                                                                                                                                                                                                                                                                                                                                                                                   |                    | 
 +| :::   | RET                                                                                                                                      | Return from Procedure ​                        | JMP r30.w0 に相当 ​                                                                                                                                                                                                                                                                                                                                                                                              ​| ​                   | 
 +| :::   | QBGT LABEL, REG1, OP(255) ​                                                                                                               | Quick Branch if Greater Than                  | Jump to LABEL if OP(255) > REG1 (※オペランドの並びに注意) ​                                                                                                                                                                                                                                                                                                                                                              ​| ​                   | 
 +| :::   | QBGE LABEL, REG1, OP(255) ​                                                                                                               | Quick Branch if Greater Than or Equal         | Jump to LABEL if OP(255) >= REG1 (※オペランドの並びに注意) ​                                                                                                                                                                                                                                                                                                                                                             |                    | 
 +| :::   | QBLT LABEL, REG1, OP(255) ​                                                                                                               | Quick Branch if Less Than                     | Jump to LABEL if OP(255) < REG1 (※オペランドの並びに注意) ​                                                                                                                                                                                                                                                                                                                                                              ​| ​                   | 
 +| :::   | QBLE LABEL, REG1, OP(255) ​                                                                                                               | Quick Branch if Less Than or Equal            | Jump to LABEL if OP(255) <= REG1 (※オペランドの並びに注意) ​                                                                                                                                                                                                                                                                                                                                                             |                    | 
 +| :::   | QBEQ LABEL, REG1, OP(255) ​                                                                                                               | Quick Branch if Equal                         | Jump to LABEL if OP(255) == REG1                                                                                                                                                                                                                                                                                                                                                                             ​| ​                   | 
 +| :::   | QBNE LABEL, REG1, OP(255) ​                                                                                                               | Quick Branch if Not Equal                     | Jump to LABEL if OP(255) != REG1                                                                                                                                                                                                                                                                                                                                                                             ​| ​                   | 
 +| :::   | QBA LABEL                                                                                                                                | Quick Branch Always ​                          | Jump to LABEL                                                                                                                                                                                                                                                                                                                                                                                                |                    | 
 +| :::   | QBBS LABEL, REG1, OP(31) ​                                                                                                                | Quick Branch if Bit is Set                    | %%Jump to LABEL if (REG1 & (1<<​OP(31))) != 0%%                                                                                                                                                                                                                                                                                                                                                               ​| ​                   | 
 +| :::   | QBBC LABEL, REG1, OP(31) ​                                                                                                                | Quick Branch if Bit is Clear                  | %%Jump to LABEL if (REG1 & (1<<​OP(31))) == 0%%                                                                                                                                                                                                                                                                                                                                                               ​| ​                   | 
 +| :::   | WBS REG1, OP(31) ​                                                                                                                        | Wait Until Bit Set                            | QBBC $, REG1, OP(31) に相当 ​                                                                                                                                                                                                                                                                                                                                                                                    ​| ​                   | 
 +| :::   | WBC REG1, OP(31) ​                                                                                                                        | Wait Until Bit Clear                          | QBBS $, REG1, OP(31) に相当 ​                                                                                                                                                                                                                                                                                                                                                                                    ​| ​                   | 
 +| :::   | HALT                                                                                                                                     | Halt Operation ​                               | PRU実行停止 (Instruction PointerはHALT命令の場所で停止、復帰後はその場所のフェッチから再開) ​                                                                                                                                                                                                                                                                                                                                                ​| ​                   | 
 +| :::   | SLP IM(1)                                                                                                                                | Sleep Operation ​                              | PRU動作クロック停止\\ IM(1)==0の場合、リセットするまで復帰しない。\\ IM(1)==1の場合、イベントが発生すると復帰する。 ​                                                                                                                                                                                                                                                                                                                                      ​| ​                   | 
 +| :::   | LOOP LABEL, OP(256) ​                                                                                                                     | Hardware Loop Assist ​                         | 本命令の直後からLABELの直前までをOP(256)回ループ実行する ​                                                                                                                                                                                                                                                                                                                                                                          ​| ​                   | 
 +| :::   | ILOOP LABEL, OP(256) ​                                                                                                                    | Hardware Loop Assist (Interruptible) ​         | LOOPと同じだが、外部からのbreakができるらしい?(詳細不明) ​                                                                                                                                                                                                                                                                                                                                                                          ​| ​                   ​|
  
arm/sitara/pru.txt · 最終更新: 2020/06/07 00:24 by kimu_shu
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0