問題タブ [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.

0 投票する
5 に答える
27084 参照

reference - いくつかのx86ASMリファレンス/チュートリアル?

x86アセンブリ言語に関するいくつかの参照を見つけようとしています。私の理解を助けるためのチュートリアル/例。-ありがとう

0 投票する
7 に答える
11023 参照

c - x86ベアメタルアセンブリでキーボード入力を取得するには?

私は、カーネルの最初のビットを一緒にハックしようとしているところです。私は現在、カーネル全体を C コードとしてコンパイルしており、コンソール ウィンドウにテキストを表示することができました。ここで、キーボード入力の受け入れを開始して、実際に使用してプロセス管理を開始できるようにします。

DJGPP を使用してコンパイルし、GRUB をロードしています。また、基本的にコンパイル済みの C コードに直接ジャンプする小さなアセンブリも使用しており、そこから満足しています。

私が行ったすべての調査では、$0x16 の ISR がキーボード バッファーから次の文字を読み取ることを示しているようです。私が知る限り、これは ASCII 値を ah に格納し、キーコードを al に格納するか、その効果を発揮するものです。インライン アセンブリで次のルーチンを使用して、これをコーディングしようとしています。

このコードが呼び出されると、コアはすぐにクラッシュします。(私は VirtualBox で実行していますが、実際のハードウェアでこの基本的なことを試す必要はないと感じました。)

今、私は実際にいくつかの質問があります。(私のコードは GRUB から起動されたので) 現在、私がリアル モードで実行しているかプロテクト モードで実行しているかは、誰も教えてくれませんでした。プロセス ハンドラをセットアップするまでは、リアル モードで実行する予定でした。

では、リアル モードで実行していると仮定すると、何が間違っているのでしょうか。また、どのように修正すればよいでしょうか。基本的な getc ルーチン、できればノンブロッキングが必要なだけですが、Google がこれを手伝ってくれているとしたら、私はうんざりします。それができたら、そこから残りを行うことができます。

私がここで尋ねているのは、私は正しい道の近くにいるのでしょうか? 一般的に、このレベルでキーボード入力を取得するにはどうすればよいでしょうか?

編集:ああ...私は保護モードで実行しています。これは確かに、リアルモード機能にアクセスしようとしてクラッシュしたことを説明しています.

それで、プロテクトモードからキーボードIOにアクセスする方法を探していると思います。自分で見つけられるかもしれませんが、もしご存知の方がいらっしゃいましたらよろしくお願いします。再度、感謝します。

0 投票する
3 に答える
47935 参照

assembly - EAX の上位バイトを含むレジスタがないのはなぜですか?

%AX = (%AH + %AL)

%EAX = (%SOME_REGISTER + %AX)では、いくつかのレジスタを使用しないのはなぜ%SOME_REGISTERですか?

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

assembly - ビット比較に関する x86 の質問

課題の最後の部分に問題があります。ビットなどのストリームを取得します。ストリームは、テキスト部分の 1 の数を含む整数です。その整数と正しい 24 を取得し、取得したテキスト データをループして、そこにあるすべての 1 をカウントしようとしました。しかし、私のプロシージャは常にゼロを返します。

適切にループしていることを確認できました。

テキスト = Hello は 16 個の 1 です。これは、そのテキストをループしてその中の 1 の数をカウントするための私の proc です。

proc の残りの部分は、プッシュ/ポップだけです。これを実際に実行したいのは、TEST を使用して 100000000 をバイトと比較することです。1 inc AX の場合は、マスクを 1 だけ右にシフトし、バイト全体をループし、inc を次のバイトに移動してもう一度実行します。

0 投票する
4 に答える
4771 参照

c - Turbo C の C コードにアセンブリ コードを含める方法は?

アセンブリ コード行を C プログラムに含める方法は?

ターボ c では、いくつかの .c ファイルのプロジェクトにアセンブリ コード ファイル (.asm) を追加する可能性はありますか?

0 投票する
18 に答える
48648 参照

assembly - CIL nop オペコードの目的は何ですか?

MSIL を調べていると、MSIL に多くのnop命令があることに気付きました。

MSDN の記事によると、オペコードにパッチが適用された場合、何もアクションを起こさず、スペースを埋めるために使用されます。これらは、リリース ビルドよりもデバッグ ビルドで多く使用されます。

これらの種類のステートメントがアセンブリ言語で使用され、後の命令を調整することは知っていますが、なぜ MSIL で MSIL nops が必要なのですか?

(編集者注:受け入れられた回答は、質問が最初に尋ねたMSIL / CIL NOPではなく、マシンコードNOPに関するものです。)

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

assembly - ゲームやアプリケーションのパッチを作成するには、どのような知識が必要ですか?

ソフトウェア ベンダーがアプリケーションやゲームを出荷した後、以前のビルドの動作を変更する別の実行可能ファイルのセットを提供する方法について、私はいつも不思議に思っていました。これはどのように行われますか?元のアプリケーションとパッチは何らかの規則に従う必要がありますか? または、パッチは元の実行可能ファイルにクロールし、そのアセンブリ情報を変更しますか? それにはバイナリファイルのバイトレベルまでの知識が必要ですか?

0 投票する
5 に答える
13617 参照

iphone - IPhone でインライン アセンブリを行うにはどうすればよいですか?

それはどのように行われますか?どのような手順を踏む必要がありますか? また、考慮すべき落とし穴や落とし穴はありますか?

0 投票する
3 に答える
2153 参照

c++ - JITと動的コンパイル/コード生成の穏やかな紹介

C / C ++フレームワーク内での動的コード生成の一見単純な基盤は、別の質問ですでに取り上げられています。コード例を使用したトピックの穏やかな紹介はありますか?

私のニーズがはるかに控えめなとき、私の目は非常に複雑なオープンソースのJITコンパイラを見つめ始めています。

コンピュータサイエンスの博士号を取得していない主題に関する優れたテキストはありますか?使い古されたパターン、注意すべき点、パフォーマンスの考慮事項などを探しています。電子リソースまたはツリーベースのリソースも同様に価値があります。(x86だけでなく)アセンブリ言語の実用的な知識があると想定できます。

0 投票する
3 に答える
1348 参照

assembly - LIB-USB を使用して乱数のバイトを転送するときの "Error -5" を修正するにはどうすればよいですか?

を使用した USB プロジェクトで問題が発生していますLIB-USB。USB デバイスは PIC18F4550 に基づいており、単一の制御エンドポイントを備えています。PC フロントエンドは MSVC で書かれており、Lib-Usb 1.12 を使用しています。

PC 側では、プログラムはまず構成を設定し、インターフェイスを要求し、制御メッセージ (ベンダー固有) を送信 (および受信) します。すべて正常に完了します。ランダムなバイト数 (100 から 2000 の間) が転送された後、usb_control_msg 呼び出しからエラー rc=-5が返されて転送が停止します。

PC 側では、呼び出しは次のようになります。

実際に USB デバイスからデータを取得する最後の呼び出しは、何度も連続して実行されますが、この方法でランダムな数のバイト (合計で 100 から 2000) が転送された後、常に終了します。パイプを EP1 に変更すると、同じエラーが最終的に表示されます。

USB デバイス (PIC) 側では、記述子は非常に単純で、EP0 パイプのみを持ち、次のようになります。

実際のフレームワークは、Bradley Minch のアセンブリ言語のものです。

誰かがこの種の問題に遭遇したことがある場合は、別のパイプ (EP1、同じ結果) を使用して解決するためにあらゆることを試みたので、PIC の UOWN ビットを確認する前に、それについて聞いてみたいと思います。パイプへの書き込み、PC ホストとのハンドシェーク (データが書き込まれる前に PC が最初にベンダー固有のコマンドを送信する必要がある) が、役に立たない。