問題タブ [intel-syntax]

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.

0 投票する
1 に答える
332 参照

assembly - アセンブリ翻訳

次の C コードをアセンブリに変換しようとしています。

シフト操作でエラーが発生し続けます。本でいくつかの例を見ましたが、何が問題なのかわかりません。シフトしたい量が変数だからかもしれないと思います。これを達成する正しい方法は何だろうと思っていましたか?

これが私が試したことです:

エラーの内容: オペランドの型が正しくありません。エラー コード: C2415

0 投票する
1 に答える
380 参照

assembly - 2007 年に動作していた intel 構文コードの GNU アセンブラー エラー

何年も前に binutils の更新ですべてのソースが壊れてしまい、断念した colorforth プロジェクトにようやく戻ることができました。何が起こっているかの例を次に示します。

最初の非ディレクティブ行は、マニュアルの例からのものです: https://sourceware.org/binutils/docs/as/i386_002dMemory.html#i386_002dMemory、残りは を使用した objdump 逆アセンブリからのもの--disassembler-options=intelです。すべてが組み立てに失敗します:

私は一晩中グーグルで運がなかった。私は何か間違ったことをしていると確信していますが、それが何であるかを理解できれば気になります。しましapt-get source binutilsたが、どこから調べればよいかわかりません。

gasそれで、再び料理をするための魔法の呪文は何ですか?

0 投票する
1 に答える
6273 参照

macos - バックエンドのエラー: 32 ビット絶対アドレッシングは 64 ビット モードではサポートされていません

こんにちは、gcc を使用して Mac で ASM intel_syntax noprefix に取り組んでいます。何らかの理由で、バックエンドでこのエラーが発生し続けます。32 ビット絶対アドレス指定は 64 ビット モードではサポートされ ていません。 ASMインラインで使用されている瞬間は?

ここに私のコードがあります:

0 投票する
1 に答える
6628 参照

assembly - 「.intel_syntax noprefix」を使用してラベルのメモリ アドレスを取得するにはどうすればよいですか?

アセンブルおよびリンクされたリアル モード プログラムの作成方法を学習しています。

  • GCC アセンブラ バージョン 2.25
  • Binutils バージョン 2.25
  • GCC バージョン 5.2.0

接頭辞を指定せずにIntel構文を使用します.intel_syntax noprefix

文字列のアドレスをSIレジスタにロードしたい。NASMでメモリ位置を参照する方法は知っていますが、GNU Assembler コード内で同じことを行うと、ラベルのアドレスではなく、文字列の WORD のみがレジスタに移動されます。

私のコードは次のとおりです。

GCC でコンパイルすると、デバッガーでプロセッサの動作を確認できます。

しかし、文字列が指すデータではなく、文字列のアドレスをレジスタに移動したいのです。

また、次のように名前を角括弧で囲みました。

違いはありません。

NASMから、このアセンブリ コードが機能することがわかっています。

NASMnameは、 のアドレスをレジスタSIに移動する命令を生成します。

私の質問:プレフィックスなしの Intel 構文を使用してGCCにシンボルのアドレスをレジスタにロードさせる方法はありますか?

0 投票する
0 に答える
214 参照

assembly - AT&T 構文を使用する場合の間違った argc

このアセンブリ チュートリアルを読んでいて、サンプルが機能するようになったので、改善を試みることにしました。一度実行すると動作しなくなったので、gcc でコンパイルしてデバッグ情報を取得できるように、AT&T 構文に変換しようとしました (OS X を使用していて、nasm は Mach のデバッグ情報を生成しないため)。 O 形式)。

動作する元のプログラムを変換しようとしましたが、AT&T 構文を使用して記述した後、動作しなくなりました。gdb を使用してデバッグしたところ、%rspargc が含まれていると予想していた に値 が含まれていることがわかりました0x93b2e5ad。これは、Intel 構文バージョンでは発生しませんでした。

私の質問は、%rspAT&T バージョンでは argc の値が正しくないのに、Intel バージョンでは正しくないのはなぜですか?

これは元の Intel 構文バージョンです (チュートリアルのバージョンを少し変更しました)。

AT&T 構文に変換した後のコードは次のとおりです。

次のように Intel バージョンをコンパイルしました。

そして、AT&T バージョンを次のようにコンパイルしました。

0 投票する
2 に答える
5264 参照

gcc - intel構文を永続的に使用するようにgccを設定するには?

gcc コマンドで正常にコンパイルされる次のコードがありますgcc ./example.c。プログラム自体は、単純に 2 つの整数を加算する関数「add_two」を呼び出します。拡張アセンブリ命令内で intel 構文を使用するには、最初に intel に切り替えてから AT&T に戻す必要があります。gcc のドキュメントによると、を使用して intel 構文に完全に切り替えることができますgcc -masm=intel ./exmaple

スイッチ-masm=intelでコンパイルしようとすると、コンパイルされず、理由がわかりませんか? すでに命令を削除しようとしました.intel_syntaxが、まだコンパイルされません。

上記のプログラムをコンパイルすることによるエラーメッセージgcc -masm=intel ./example.cは次のとおりです。

0 投票する
0 に答える
79 参照

assembly - NASM コンパイラでコンパイルすると奇妙なエラーが発生する

私は公式に困惑しています...この.ASMファイルをコンパイルしているときに最も奇妙なエラーが発生しています...何らかの理由で、この行mov bx, word [w1]によりコンパイラは次のように言います: error: invalid effective address. ただし、その前の行は問題なくmov ax, word [w0]コンパイルされます。w1 の定義方法に問題があるのではないかと考えたので、振り返ってみると、w0 と w1 の両方がラベル:w0 dw 0と を除いてまったく同じであることがわかりましたw1 dw 0。何が原因なのか全くわかりません!自分でコンパイルしてみたい場合は、ここにソースがあります...

とにかく、私の質問は、何が原因で、どうすればこの問題を解決できますか?

編集: 完全なコードはここにあります: http://pastebin.com/NFqcDnhZ

0 投票する
1 に答える
1624 参照

assembly - メモリと GNU の定数を .intel_syntax として区別する

次のような Intel 構文 (ガスをアセンブラーとして使用) で記述された命令があります。

しかし、その mov 命令は、予想どおりmov 0xe,%rdxではなくにアセンブルされています。期待される動作を得るにはmov $0xe,%rdx、最初の命令 (または の定義) をどのように記述すればよいですか?msg_size

0 投票する
1 に答える
1849 参照

c - 文字列をアセンブリ ループして文字数をカウントする

文字列の文字数をカウントするアセンブリ コードを作成しようとしましたが、エラーが発生しました。

コード、gcc と intel_syntax を使用

そして、私はエラーが発生しました:

最後に、正規表現 pattern([pq][^a]+a) を検索し、開始位置と長さを出力するプログラムを作成したいと思います。私は C で書きましたが、アセンブリで動作させる必要があります: 私の C コード: