サムモード命令は2バイトで、ARMモード命令は4バイトです。 このスクリーンショットは親指モード命令の逆アセンブリです。 4バイトの命令と2バイトの命令が混在するのはなぜですか? 誰かがこれを説明できますか?アームサムモード4バイト命令
ありがとうございます。
サムモード命令は2バイトで、ARMモード命令は4バイトです。 このスクリーンショットは親指モード命令の逆アセンブリです。 4バイトの命令と2バイトの命令が混在するのはなぜですか? 誰かがこれを説明できますか?アームサムモード4バイト命令
ありがとうございます。
のCortex Mのミクロスは、親指とARMモード間に何かあるThumb-2のモードでのみ実行することができます。 Thumbs-2命令セットは、16ビットおよび32ビット命令を含み、プロセッサは、命令の両方の先端を実行するためにスイッチモードを必要としない。
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471i/CHDFEDDB.html
またはPDF
http://infocenter.arm.com/help/topic/com.arm.doc.dui0471i/DUI0471I_developing_for_arm_processors.pdf
Thumb-2の技術は、ARMv6T2以降以降のアーキテクチャで使用可能です。 Thumb-2テクノロジは、Thumb命令セットの主な機能強化です。これは、プログラム内の16ビット命令と自由に混在できる32ビット命令を追加します。追加の32ビットエンコードThumb命令により、ThumbはARM命令セットのほとんどの機能をカバーできます。 16ビットおよび32ビット命令の可用性により、Thumb-2テクノロジでは、以前のバージョンのThumbのコード密度とARM命令セットのパフォーマンスを組み合わせることができます。
ですので、** thumb-2 **です。 –
2バイトの(サム1)命令としてエンコードできるときに、2つのmov命令が4バイトであるのが本当の問題です。 –
* thumb-1 *には32ビット演算コードはまったくありません。 * thumb-2 *のみが 'mov.w'などです。プロセッサは命令間でモードを切り替えることはできません(BLXなどまで)ので、このコードは* thumb-2 *でなければなりません。 「bl」と「blx」さえも* thumb-1 *では16ビットです。 –