inline-assembly

    1

    2答えて

    私はまだ学校(eons ago)以前からアセンブリを行っておらず、x86を一度も実行していませんが、既存のコードには厄介なバグがあります。コードを書いた人は長くなくなっていて、ここの誰も私の質問に対する答えを知る人はいません。私がする必要があるのは、128ビット値のアトミックコピーを作成することです。次のように私は現在持っているコードは次のとおりです。 void atomic_copy128(vo

    10

    3答えて

    Linuxではアセンブラを使い始めています。私はtestasm.cとして以下のコードを保存しました コンパイルして:gcc testasm.c -otestasm コンパイラは次のように答えます: "asmの不可能な制約"。 #include <stdio.h> int main(void) { int foo=10,bar=15; __asm__ __volatile_

    5

    2答えて

    GNUプロジェクトの一部のソースコードを読みながら、私はインラインアセンブリのこのビットに出くわした:ここ __asm__ ( "divq %4" : "=a" (q), "=d" (r) : "0" (n0), "1" (n1), "rm" (d) ); 変数q、r、n0、n1、そしてdは64ビット整数です。私は、これがしていることの要点を得るのに十分なアセンブ

    6

    1答えて

    私はCコードで書かれた小さなインラインアセンブリコードを持っています。 asmは配列を通過し、必要に応じて値を別の配列からレジスタに移動します。 最後に、割り込みが呼び出されます。 コードは次のようになります。 cmp arrPointer[2],1h jne EXIT mov AX, shortArrPtr[2] EXIT: int 3h Microsoftによると、このすべてのx8

    1

    2答えて

    質問:非PODクラス内からアセンブリ内のメンバー変数にアクセスするにはどうすればよいですか? 推敲: 私はクラスのメンバ関数のためのいくつかのインラインアセンブリコードを書かれたが、どのような私を見逃さすることは、クラスのメンバ変数にアクセスする方法ですしています。私はオフセットマクロを試しましたが、これは非PODクラスです。 私が使用している現在の解決策は、グローバルスコープからメンバ変数へのポ

    2

    1答えて

    ここには、VC++プロジェクトに挿入した単純なasmコードがあります。 addr_curr_ebpは、EBPポインタの現在のアドレスです。これは、スタックフレーム内の古いEBP値を指しています。 4バイト後に、アプリケーション関数内の戻りアドレスが入ります。コードセクションから1バイトを抽出します。 gtalk、vlcなどの他のアプリケーションと一緒に自分のコードを実行します。私のコードにProb

    0

    1答えて

    ここには、VC++プロジェクトに挿入した単純なasmコードがあります。 return_addrは、スタックフレームのリターンアドレスです。 StackWalk関数を(私によって書かれていないcodeproject.com/KB/threads/StackWalker.aspx)StackWalk64()フレームを抽出する使用します。これの詳細は関係ありません。リターンアドレスを使用して、現在調べて

    0

    6答えて

    とCを使用して、私はちょうどので、私はいくつかのチュートリアルを中心に閲覧したと私は、この発見テストとアセンブラはCでどのように機能するかを学習しようとしています: __asm { mov ax,0B800h //startaddress for the screen memory (in textmode) mov es,ax //add the startadd

    6

    2答えて

    次のGCCインラインasmは、LuaJitのcocoライブラリから取得したものです。誰かがそれが何をしているのかという行ごとの説明を提供できますか? static inline void coco_switch(coco_ctx from, coco_ctx to) { __asm__ __volatile__ ( "movl $1f, (%0)\n\t" "movl

    3

    2答えて

    ここでは、Cコールスタックの切り替えに関する私のprevious questionについて説明します。しかし、C++では異なる呼び出し規約(thiscall)を使用していて、異なるasmコードが必要な場合があります。誰かがその違いを説明し、C++コールスタックを切り替えるコードスニペット(GCCインラインasm)を指し示すことができますか? おかげで、 ジェームズ