問題タブ [gnu-assembler]
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.
gcc - アーム アセンブリ: '#define' リスク
ARM アセンブリで
正常に動作します。#define MODE 0x1f
今、私は上記のコードを に変更したいと思いますbic r0,r0, #MODE
。
ここにはリスクがあります。が定義されているヘッダー ファイルをインクルードするのを忘れた場合#define MODE 0x1f
、gcc は問題なくアセンブルしますが、結果は間違っています。コンパイラ#MODE
は 0 として変換します。
問題の原因が " " であることを証明しました#
。#
これはアセンブリで使用されるため、「#」を処理しないようにプリプロセッサに指示するにはどうすればよいですか?
ありがとう
linux - Linux に GAS (GNU Compiler) をインストールして使用するには?
私は Ubuntu を使用しており、Linux 用のアセンブラー・コンパイラーを探していたところ、GAS を見つけました。
インストールして実行しようとしていますが、できません。
macos - gdbメモリアクセスの苦情の詳細
as(アセンブラコードから)を使用してコンパイルされたオブジェクトファイルがあります。
ldを使用してリンクすると、 stepi(またはnexti )を実行しようとすると、gdbはアドレス0x0でのメモリアクセスについて文句を言います。gccを使用してリンクすると、すべて問題ありません。
この問題は、 gccのリンク結果と比較して生成されるセクションが少ないldが原因であると推測しています。
実行可能ファイルの何が問題になっているのかを理解できるように、gdbをより詳細に構成する方法はありますか?
PS:実行可能ファイル自体は、両方のバージョンで期待どおりに実行されます。
後で編集:コンパイルに使用したコマンド:
assembly - GAS ELFは、ディレクティブ.type、.thumb、.size、および.sectionが必要なのはいつですか。
GNUを使用して、ARM Cortex-M3ベースのマイクロコントローラー(Thumb 2命令セット)のアセンブリプログラムに取り組んでいます。
いくつかのサンプルコードでは、のようなディレクティブを見つけ.size
ました。これはELFディレクティブであると理解しています.section
。.type
例として:
ディレクティブは、シンボルのタイプを設定すると言われています。
.type
通常は、%object(データを意味しますか?)または%functionのいずれかになります。それがどのような違いを生むのかわかりません。必ずしも含まれているわけではないので、いつ使用する必要があるのかわかりません。
これに関連するのは.thumb_func
ディレクティブです。私が読んだことから、それは以下と同等であるように思われます:
それとも完全に違うものですか?
.size
おそらくシンボルに関連付けられたサイズを設定します。これが必要なとき、私にはわかりません。これはデフォルトで計算されますが、このディレクティブでオーバーライドできますか?もしそうなら-いつオーバーライドしたいですか?
.section
ドキュメントを見つけるのは簡単で、それが何をするのかについてはかなりの考えがあると思いますが、それでも使用法については少しわかりません。text
私の理解では、さまざまなELFセクション(コード、data
書き込み可能データ、bss
初期化されていないデータ、定数など)を切り替え、rodata
必要に応じて新しいセクションを定義します。コード、データ、初期化されていないデータなどを定義するかどうかに応じて、これらを切り替えると思います。しかし、上記の例のように、なぜ関数のサブセクションを作成するのでしょうか。
これに関するどんな助けもありがたいです。これをより詳細に説明するチュートリアルまたはドキュメントへのリンクを見つけることができれば(できれば初心者には理解できるでしょう)、私は非常に感謝しています。
これまでのところ、「マニュアルとしての使用」はある程度役に立ちました。おそらく、より多くの知識があれば、私よりも多くのことを学ぶことができます。
assembly - Gnu AS 式では「&」演算子を使用できません
変数のアドレスを取得し、4096 (メモリ ページのアドレスに対応する) で処理したいと考えています。これはオフラインで計算できるものなので、次のようにしました (v は変数で、vpage にはそのページのアドレスが含まれている必要があります)。
このファイルを x86 アセンブラーでコンパイルしようとすると、次のエラーが発生します。
なぜGASはこれを計算することを拒否するのでしょうか? 奇妙な部分:「&」を「+」に置き換えると、コードがコンパイルされ、リンク後にアドレスが正しく計算されます。この動作の理由や修正方法についてのヒントは大歓迎です。
c - IntelインラインasmをAT&Tに変換して、gccでコンパイルできるようにするためのサポートが必要です
これは元のコードです:
道化師のおかげで、私は今これを持っています:
明らかに、gccはclflushで揮発性を好まない。みんな、ありがとう。
VB6アプリで使用できるように、dllとしてgccを使用してSlicing-By-8をコンパイルしようとしています。
c - cからアセンブリ関数を呼び出す
Cプロジェクトから呼び出された関数をアセンブリで使用しようとしています。この関数は、たとえばlibc関数を呼び出すことになっていますprintf()
が、セグメンテーション違反が発生し続けます。
.cファイルには、関数の宣言があります。
.asmファイルに私が持っている
ポインタのコメントをいただければ幸いです。
assembly - アセンブリ無限ループ
x86アセンブリを使った私の物語は続きます。私はこのコードで無限ループに入り、少し戸惑っています。
do_exitへのジャンプを期待しています: %ecxが4に達すると、反復ごとに増分されるため
c - 配列を外部アセンブリ関数に渡す
どういうわけか、cからのこの呼び出しアセンブリ関数に関連しています
私はその関数にintと長さの配列を渡します:
組立部品はこんな感じ
len引数12(%ebp)を出力できますが、配列の最初の要素である%edxで同じことを試みるたびに、セグメンテーション違反が発生します。
次に、データでいっぱいになります。
assembly - ELF 形式の .section を GNU GAS で読み取り専用にするにはどうすればよいですか?
私が理解しているように、これらは.section
ディレクティブです:
COFF 形式が使用された場合の「古い」ディレクティブには「読み取り専用」がありました。
ELF 形式の .section を読み取り専用にするにはどうすればよいですか? 指定子がまったくない?