問題タブ [inline-assembly]
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 - 16 ビット OS の構築に役立つ
OSのような古い16ビットDOSを構築しようとしています。
私のカーネルコードの例:
これは私がそれをコンパイルする方法です:
仮想マシンで実行します。
定数値の putchar 関数 (カーネル コード内) を作成すると、次のようになります。
その後、正常に動作します。しかし、引数を渡すと (前のコードにあります)、任意の文字にスペースが出力されます。私は何をすべきか?
c++ - インライン asm を使用して 2 つの比較を行う for ループを作成する
次のコードの for ループをアセンブリに変換したいのですが、開始方法がわかりません。それを行う方法とそれが機能する理由の説明をいただければ幸いです。
私はVS2010、C ++を使用して、x86用に書いています。コードは次のとおりです。
c++ - C++ でインライン アセンブリを行う方法 (Visual Studio 2010)
私は、200 行のコア モジュールによって 70% の時間が使用される、パフォーマンスが重要な、数を処理する C++ プロジェクトを書いています。
インライン アセンブリを使用してコアを最適化したいのですが、まったく初めてです。ただし、GCC や NASM で使用されるものなど、いくつかの x86 アセンブリ言語は知っています。
私が知っているすべて:
アセンブラ命令を配置し_asm{}
たい場所に配置する必要があります。
問題:
- どこから始めればよいかわかりません。インライン アセンブリが開始された時点で、どのレジスタに何が入っていますか?
c# - アセンブリで Hello World ライブラリ関数を作成し、C# から呼び出す
この回答で使用しているように NASM を使用するとしましょう: how to write hellow world in assembly under windows。
c# やその他の .net 言語と組み合わせたアセンブリに関して、いくつかの考えと質問がありました。
まず、HelloWorld
このパラメーターを受け取る次の関数を持つライブラリを作成できるようにしたいと考えています。
- 名前
C# では、メソッド シグネチャは次のようvoid HelloWorld(string name)
になります。
名前からのHello World
私は少し調べましたが、これを始めるのに十分できれいな資料を見つけることができません. 私は基本的な組み立てを以前からほとんど知ってgas
います。
したがって、正しい方向への指針は非常に高く評価されます。
要約すると
- 1 つ以上のパラメーターを受け取るルーチンを ASM ( NASM ) で作成します。
- 上記の機能のライブラリをコンパイルして作成します
- ライブラリを任意の .net 言語に含める
- 含まれているライブラリ関数を呼び出す
ボーナス機能
- 返された値をどのように処理しますか?
- ASMメソッドをインラインで書くことはできますか?
アセンブリまたは c でライブラリを作成する場合、特定の「定義済み」の方法、つまり c 呼び出し規則に従いますよね?
c - _syscallN マクロが入った場所?
以前は、既存のライブラリを使用せずに Linux で直接システム コールを行う必要がある場合は、インクルードするだけで、次<linux/unistd.h>
のようなマクロを定義できました。
次に、コードのどこかに置くことができます:
write
システムコールを適切に実行する関数を定義します。
このシステムは、より堅牢な何か (すべてのプロセスが取得する "[vsyscall]" ページと推測しています) に取って代わられているようです。
では、プログラムが新しい Linux カーネルで直接システム コールを実行するための適切な方法 (具体的に教えてください) は何ですか? 私は、libc を使用する必要があることを理解しており、それで作業を完了できます。しかし、これを行う方法を知りたいという正当な理由があると仮定しましょう:-)。
g++ - 組み込みプログラム (SSE) - g++ - ヘルプが必要
stackoverflow に質問を投稿するのはこれが初めてなので、質問やコードの書式設定で行った可能性のあるエラーを見逃さないようにしてください。しかし、私がもっと注意するように、同じことを私に指摘してください。
私は、2 つの 128 ビット (4 つの float 変数を含む) の数値を加算するための単純な組み込みルーチンをいくつか作成しようとしていました。ネット上でいくつかのコードを見つけ、それを自分のシステムで実行しようとしていました。コードは次のとおりです。
私が使用する g++ パラメータは次のとおりです。
私が得るエラーは次のとおりです。
これらのエラーをデバッグしたり、ググったりするのに多くの時間を費やしました。私は組み込み関数の完全な初心者なので、いくつかの重要なことを見落としている可能性があります。
どんな助けでも大歓迎です、
ありがとう、
Sriram。
c - インライン アセンブラから Win32 API 関数を呼び出すにはどうすればよいですか?
kernel32.dll から Sleep 関数を呼び出しているだけなので、このコードの何が問題なのか教えてください。何が問題なのですか? 私は Visual Studio 2008 を使用しています。どうもありがとうございました。
assembly - インラインアセンブリからpow関数を呼び出そうとしたときのC2244
インラインアセンブリからpow関数を呼び出したいと思います。問題は、エラーC2244が発生することです。'pow':関数定義を既存の宣言と一致させることができません。私はアセンブリに慣れていないので、これは些細な質問かもしれませんが、どうすればこれを解決できますか?コンパイラがpowの過負荷を適切に解決できないことと関係があると思います。次のコードフラグメントがエラーの原因です。
c++ - Clang は Lock Prefix をサポートしていません。どうすれば回避できますか?
次のコードを想定します。
Clang コンパイラは lock プレフィックスをサポートしていません (まだ?)。私は今何をすべきですか?
go - Goコードにインラインアセンブリを含めることは可能ですか?
Goコードにインラインアセンブリを含めることは可能ですか?
このブログ投稿では、Go を別の.s
ファイルにコンパイルして編集することを示していますが、多くの C コンパイラがサポートするように、Go 関数の一部としてインラインasm をサポートしていません。