問題タブ [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.
assembly - x86アセンブリ、誤解を招くエラー
私はアセンブリを学び、GNU ASで使用するためのAT&T構文のプログラムを持っています。これは動作するはずです。GDBでこのエラーが発生します:
コードは次のとおりです。
私が本当に明らかに間違ったことはありますか?そして、アセンブリを学ぶためにどのリソースをお勧めしますか?(私はWikiBooks X86アセンブリの記事とほとんどのGASマニュアルを読みました)。
assembly - asm でのメモリアドレッシング
私は asm を学んでいますが、これが私の (多くの) 問題の 1 つです: 配列のインデックスの値を変更したいと思います。それを言いましょう:
- %eax には新しい値が含まれています
- スタックの一番上 (つまり (0)%esp) には配列のインデックスが含まれます
- -4(%ebp) には、配列のアドレスが含まれます。
試してみましmovl %eax, (-4(%ebp),0(%esp),4)
たが、うまくいきませんでした。さらに悪いことに、構文エラーがスローされます: bobi.s:15: Error: jump `(%ebp),0(%esp),4)' after expression
正しい構文は何ですか?
assembly - gcc インライン アセンブリの ljmp 構文
コードセグメント(CS)レジスタを設定するためにファージャンプを使用することを考えていました。なぜ私がこれを行っているのか、なぜセグメンテーションを扱っているのかを理解するにはしばらく時間がかかるので、それは学問的な課題と考えてください。構文を正しく理解できないようです。
Error: suffix or operands invalid for 'ljmp'
cs
別のレジスタに入れるのはばかげていることはわかっていますが、使用が機能し%0
ていなかったので試してみることにしました(ax
レジスタも機能しません)。
正常にコンパイルされるコードを見ていますが、同じだと思っていたので、これは私を夢中にさせていljmp
ます:__asm volatile ( "lcall $0x8, $far_call" );
もちろん、CS レジスタに影響を与える他のハッキーな方法を歓迎します。
macos - OSX への GNU アセンブラーのインストール
どんなにググっても、GNU Assembler を Mac にインストールする方法について (比較的) わかりやすい手順が見つからないようです。
gcc -c
(Mac では Apple Clang) を使用して.s
/ファイルをアセンブルできることはわかってい.S
ますが、実際の GNU Binutils を使用したいと考えていますas
。
assembly - AVR用のgnuアセンブラを使用してPCに対してジャンプするにはどうすればよいですか?
avr-objcopyを使用して逆アセンブルしたバイナリファイルがあります。割り込みベクタテーブルは次のようになります。
いくつかの変更を加えて、このファイルを再構築したいと思います。最初の2列を削除して、通常のアセンブリファイルになるように再フォーマットしました。すなわち:
しかし、私が走ると
次に、生成されたファイルを逆アセンブルします。(objcopy -S a.outを使用)出力は次のようになります。
では、PC相対ジャンプを尊重するために、どうすればavrを取得できますか?
assembly - モノ「asmonly」オプション
「hello world」を出力する MonoDevelop を使用して、単純な mono 実行可能ファイルを作成しました。AOT の「asmonly」オプションを試してみたかったのです。そう:
セグメンテーション違反が発生するのはなぜですか? Fedora 12 x64 を使用しています。そして、ld の「エントリ シンボル _start が見つかりません」というエラーは何ですか?
ありがとう!
assembly - アセンブリ: あるセクションから別のセクションへジャンプ
x86 アセンブリで、あるセクションから別のセクションへの無条件ジャンプを実行するにはどうすればよいですか?
例えば:
これは飛躍だと思います。これを実行しようとすると、segfault が発生します。回避策はありますか?
c - "movl $0x2d, 0x4(%esp)" で 0x4 は何をしますか?
GCC によって生成されたアセンブリ コードを調べています。しかし、私は理解していません:
第 2 オペランドで、 は何0x4
を表していますか? オフセットアドレス?また、レジスタ EAX の用途は何ですか?
visual-studio - MicrosoftアセンブラからGNUアセンブラへの変換
VisualStudioで適切にコンパイルされるARMアセンブリコードがあります。同じARMアセンブリコードを使用して、GNUアセンブラでコンパイルしたいと思います。ご存知のように、両方のアセンブラーの構文は異なります。これらのアセンブリ構文から変換できるツールがあるかどうか疑問に思いました。
assembly - MOV src、dest(または)MOV dest、src?
MOVは、おそらく、ASMを学びながら誰もが学ぶ最初の指示です。
ちょうど今、私はIA32アーキテクチャ用のGNU /LinuxでのAssemblyLanguageProgrammingという本に出会いました。RajatMoona著:(壊れたリンクは削除されました)
しかし、私はそれがであることを学びましたMOV dest, src
。「Loadwith」のようなものdest
ですsrc
。ウィキでも同じことを言っています。
著者が間違っていると言っているのではありません。私は彼が正しいことを知っています。しかし、私はここで何が欠けていますか?
as
ところで..彼はこれらの命令を組み立てるためにGCCを使用しています。しかし、それは命令構文を正しく変更するべきではありませんか?