問題タブ [thumb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - サンプルの親指 2 の指示が必要です
Thumb 2 命令セットに混乱しています。
ARM 命令のサイズは 32 ビット、サムのサイズは 16 ビット、サム 2 のサイズは 32/16 ビットであることを理解しています。
サンプルの ARM 命令はこのリンクから、親指の命令はこのリンクから見つけることができます。
しかし、Thumb 2 の命令が見つかりません。誰かがいくつかの親指2の指示を示すことができますか?
私は Thumb 2 命令の概念を理解していないと思います (それが Thumb 2 命令が見つからない理由かもしれません)。誰でももっとうまく説明できますか?
assembly - GNU アセンブラ、アーム IT ブロック エラー
addeq は IT ブロックにある必要があるというエラーが表示されます。私が言えることから、それはそうです。
https://github.com/Jcfunk/g3_kernel/blob/lp-release/arch/arm/crypto/aesbs-core.S_shippedの 455 行目のコードの一部を次に示します。
addeq は IT ブロックに含まれていますか?
私がグーグルで検索したことから、If-Thenブロック、このITブロックは、if EQ then ADDEQ else BNE .Ldec_loop. ADDEQはITブロックに入っているような気がしますが、アームの組み立てについては何も知りません。または、ビルド フラグの競合である可能性があります。
これは make の出力です。make V=1 zImage-dtb です。おそらく問題は、AS に渡されるフラグの 1 つです。
BFD バージョン (GNU Binutils for Ubuntu) 2.25.1 gcc (Ubuntu 5.2.1-17ubuntu4) 5.2.1 20150911 を使用して、GNU アセンブラー バージョン 2.25.1 (arm-linux-gnueabihf) を使用しています。
これは LG G3 の Android カーネルの一部であり、クロスコンパイルされていないアーム デバイス上に構築されます。
ビルド フラグ -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/5/include -I/sdcard/build/navelA/arch/arm/include -Iarch/arm/include/generated -Iinclude -include ./ /linux/kconfig を含めます。h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-msm/include -Wall -DNDEBUG -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration - Wno-format-security -fno-delete-null-pointer-checks -mcpu=cortex-a15 -mtune=cortex-a15 -mfpu=neon-vfpv4 -marm -ffast-math -fsingle-precision-constant -fgcse-lm - fgcse-sm -fsched-spec-load -fforce-addr -Os -marm -fno-dwarf2-cfi-asm -fstack-protector -mabi=aapcs-linux -mno-thumb-interwork -funwind-tables -D__LINUX_ARM_ARCH__=7 - mcpu=cortex-a15 -msoft-float -Uarm -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fomit-frame-pointer -gdwarf-2 -Wdeclaration-after-statement -Wno-pointer- sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -munaligned-access -fforce-addr -fsingle-precision-constant -mcpu=cortex-a15 -mtune=cortex-a15 -marm-mfpu=neon-vfpv4 -fgcse-las -fpredictive-commoning
assembly - ARM アセンブラでの .W サフィックスの使用
命令セットのマニュアルを読んでいて、接尾辞について疑問に思ってい.Wます。
マニュアルには次のように書かれています。
分岐命令の場合のように、オペランドが命令またはリテラル データのラベルである場合など、.W サフィックスを指定する必要がある場合があります。これは、アセンブラが適切なサイズのエンコーディングを自動的に生成しない可能性があるためです。
アセンブラのデフォルトのエンコーディングをオーバーライドする必要がある理由が思いつきません。私がこれまでに試したことは、常にコンパイルせずに正常にコンパイルされました.W。
アセンブラの潜在的なバグを克服するために、彼らは本当に特別な構文を追加しましたか (おそらく修正されました)?
.W (Cortex-M3 の Thumb2) を明示的に使用する必要がある例をいくつか挙げていただけますか。
linux - Linux での Thumb アセンブリ
.oを使用して、Ubuntu でオブジェクト ファイル () を取得しようとしていますarm-linux-gnueabi-as。これが私の一連の指示です:
実行すると:arm-linux-gnueabi-as -mthumb thumb.s -o thumb.o
次のエラーが表示されます:
thumb.s:7: Error: selected processor does not support Thumb mode `vst1.32 {D16-D17},[R2]'
パラメータ-mcpu=<cpu name>など-march=<arch name>を使用してみましたが-mcpu=cortex-m4、-march=armv7-mそれでも同じエラーが発生します。
サム命令セットを取得するために別の CPU をシミュレートする方法はありますか?
assembly - Thumb で負の数を移動する方法
親指で負の値を移動しようとしています。
ARM では簡単に、
mvn r0, #1
Thumb のレジスタに負の値を移動するにはどうすればよいですか?
ありがとう。
assembly - 親指の条件付き命令をITブロックに入れるにはどうすればよいですか
いくつかの継承されたコードを現在のプラットフォームに移植しています。コンパイルすると、arm アセンブラ コードに関するエラーが報告されます。
メッセージは次のとおりです。
私はアームアセンブラの初心者なので、以下のコードをITブロックにする方法が質問です。コンパイラの要求どおり。
ありがとう