問題タブ [yasm]
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 - Linuxでcソースコードからnasmコンパイル可能なアセンブリコードを生成するには?
テスト プラットフォームは 32 ビット Linux です。
基本的に、gcc を使用して Intel スタイルと At&T スタイルの両方のアセンブリ コードを生成できることはわかっていますが、nasm/tasm を直接使用して、gcc が生成した Intel スタイルのアセンブリ コードをコンパイルすることはできないようです。
私は Windows と Linux プラットフォームの両方で asm コードのプロジェクト分析を行っているので、nasm\yasm のようなプラットフォームに依存しないアセンブラーで両方をコンパイルできれば、はるかに簡単な時間を持つことができると考えています...
私の質問は、Linux で c ソース コードから nasm コンパイル可能なアセンブリ コードを生成する方法ですか?
linux - Linux の printf でのセグメンテーション違反 ASM
以下は、本のプログラム (Introduction to 64 Bit Intel Assembly Language Programming for Linux, by Seyfarth, 2012) の第 9 章です。障害 (gdb 内) は次のとおりです。
プログラム受信信号 SIGSEGV、セグメンテーション違反。0x00007ffff7aa10a5 in __printf_size (fp=0x400400, info=0x0, args=) at printf_size.c:199 199 printf_size.c: そのようなファイルまたはディレクトリはありません。
この章までは、以下を使用して「オブジェクト ファイルを作成する」ことに成功しました。
その後、
これは本からコピーしたプログラムです (l 10 push rbp; 最初に rem'd しましたが、結果は同じでした):
この章の前のプログラム (「Hello World」の例) で同様のセグメンテーション違反が発生した後、
このプログラムまで機能していました。
assembly - .bss 変数アセンブリの初期化
変数を宣言しました:
プログラムでこれを値に初期化したいと思います255
。
コンパイルすると、次のエラーが表示されます。
ここで何が間違っていますか?
assembly - 再帰パスカルの三角形 (組み合わせ関数) アセンブリ
アセンブリで再帰的な組み合わせ関数を記述しようとしています( Yasm (nsam に類似))。ループ、乗算、除算は使用できません。
私は正しい軌道に乗っていると確信していますが、2番目の内部関数呼び出しに到達すると問題が発生します。誰かが私を助けて、どこが間違っているのか教えてもらえますか?
編集:これは結果を返す私の更新されたコードですが、常に正しいとは限りません。少し論理が間違っているに違いないと思います。
これは、私が参照として使用している JavaScript の実装です。
assembly - make: 循環依存が削除されました
私はすでにstackoverflowや他のmakeマニュアル、ウェブサイトを長い間検索してきましたが、make関数の末尾の空白やミスの使用法を見つけることができません. この警告メッセージを解決するのを手伝ってくれませんか?
メイクファイル:
main.asm:
ありがとうございます :)
visual-studio - vsyasm を自動的にインストールする方法
Microsoft C++ を使用して Windows で mpir を自動的にビルドする方法を作成しようとしています。必要なステップの 1 つは vsyasm をインストールすることのようです。そのため、私の現在のミニ プロジェクトは、それを行うための自動化された方法を作成することです。つまり、人間の介入なしにバッチ ファイルまたはプログラムで実行できるものです。
vsyasm の readme では、次の 3 つの方法が提案されています。
1 つ目は、Windows セキュリティによってブロックされます。手動の介入を必要としない方法はありますか?
2 番目と 3 番目は、手動で直接介入する必要があります。特にIDE内ではなくコマンドラインからプロジェクトをビルドしたい場合、自動化された同等のものはありますか?
私が見逃している他のオプションはありますか?
assembly - アセンブラーでの出力用の 10 進値の変換
私は 64 ビット アセンブリ コード (yasm) に取り組んでおり、奇妙さや 1 桁としてではなく、正しく読み取れるように、任意に大きな 10 進数値を出力しようとしています。私は周りを見回しましたが、オンラインで適切な解決策を見つけることができないようです. 私のコードは現在、2 値の 10 進数を出力します (商を出力し、10 で割ったときの剰余を出力します)。より大きな値については、10 で繰り返し除算し、剰余がゼロではない間に剰余を出力する do-while ループ構造に沿って考えていました。この方法の問題点は、結果を逆に出力し、これを試行して逆にするためにコードがさらに複雑になることです。うまくいく解決策を知っている人はいますか?aaa、aam などを見てみましたが、それらがどのように機能するのか完全には理解できず、これらは 32 ビット操作でのみ使用できると思われます。
コード構造は次のとおりです。
4 の出力を表示しようとして、階乗値を計算しています! 24と5として!現在、2 つの 10 進数値しか表示できません (何らかの理由で full_print 条件の最初の部分がスキップされるため、3! は 6 ではなく 06 として出力されます) が、24 は正しく出力されます。私は 3 桁の 10 進数値を出力する簡単な方法について頭を悩ませてきましたが、条件付きで非常に面倒になり始めています。
compiler-errors - FFMPEG 用に libvpx をコンパイルするときのコンパイル エラー
64 ビット Ubuntu 14 マシンで FFMPEG をコンパイルしています。エラーをスローし続ける libvpx ライブラリを除いて、すべてが正常にコンパイルされました。
私はこのガイドに従いました: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu このエラーが何を意味するのかわかりませんが、NASM での libvpx のコンパイルが壊れていることをどこかで読みましたが、コンパイル方法がわかりませんそれ以外の場合。バージョン 1.2 または 1.1 をインストールしても、まったく違いはありません。何か案は?
c - 並べ替えアルゴリズム: アセンブリ
アセンブリ言語 (Linux、64 ビット、yasm) でバブルソート アルゴリズムの関数を実装しています。この関数は C ファイル内から呼び出され、配列と配列サイズがそれぞれ rdi と rsi を介してアセンブリに渡されます。
配列は整数のみをソートします。私は Java でバブルソートをコーディングし、そこでテストしました。問題なく動作します。ただし、配列 {9,8,7,6,5,4,3,2,1,0} を C ファイル経由で渡すと、出力は {8,8,8,8,8,8,8, 8,8,9}。gdb でデバッグしましたが、まだ問題がどこにあるのかわかりません。for ループの構築は正常に機能します (rcx と rdx は正しく機能します)。配列要素へのアクセス方法に問題があるようです。アドバイスをいただければ幸いです。
c++ - gdb を使用して、yasm を使用してアセンブルされたコードをデバッグするにはどうすればよいですか?
yasm を使用してコードをアセンブルし、C++ プログラムにリンクしていますが、gdb でアセンブリ言語ファイルのシンボルにブレークポイントを設定できません。
コマンドラインはおそらくそれほど明るくはありませんが、ここに行きます:
すべて問題なくビルドされ、プログラムが実行されます。しかし、それを gdb にロードしてデバッグしようとすると、yasm ファイル内のどの関数にもブレークポイントを設定できないようです。たとえば、MandelRect という関数があります。メインのどこかから呼び出された場所を示すgdbは次のとおりです。
そのアドレスが何であるかを示すgdbは次のとおりです。
これは、ブレークポイントを設定できない gdb です。
そして、正しいアドレスにブレークポイントを配置すると、実行が関数に到達したときに、命令ごとにステップ実行できなくなります。私が知る限り、それはレーベルからレーベルへと流れています。
明らかに - まあ、多分?- これは、ファイルがデバッグなしでコンパイルされたという gdb の主張と関係があります。しかし、関連する .o ファイルとバイナリにシンボルがあるようです:
では、どうすればこれを修正できますか?私は何かを誤解していますか、それともyasm -g
壊れていますか? yasm のデバッグ情報を gdb で動作させることができた人はいますか?
(システムはLinux 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
です。)