問題タブ [nop]

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 投票する
2 に答える
3873 参照

java - slf4j NOP 実装を取得してコンソールにログを記録する

slf4j NOP実装でコンソールにログを記録したい。現在、何もログに記録していません。代わりに、コンソールにログを記録する方法はありますか?

私のユースケースは、に依存するライブラリ(アプリではない)があることですslf4j-api。しかし、そこにあるクラスの中には、テスト目的で main メソッドを持っているものがあります。slf4j-log4jこれらの主要なメソッドを実行すると、バインディングに依存することなく、すべてのログがコンソールに送られるようになります。

ありがとう。

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

arduino - Arduino で 1 秒の遅延を作成する方法

こんにちは、Arduino は初めてで、1 秒の遅延を作成しようとしていますが、delay_ms 関数を完了するコードを生成する方法がわかりません。解決しようとしましたが、取得できないようです。ありがとうございます void setup() {

0 投票する
1 に答える
6502 参照

assembly - 長いマルチバイト NOP: 一般的に理解されているマクロまたはその他の表記法

x86 (および x86_64) プロセッサがシングルバイトNOP命令だけでなく、さまざまな種類のマルチバイト NOP に似た命令を備えていることは大きな秘密ではありません。

これらは私が見つけることができたものです:

AMD 推奨、参考文献。AMD ファミリ 15h プロセッサ向け AMD ソフトウェア最適化ガイド、ドキュメント #47414、セクション 5.8「オペランド サイズのオーバーライドとマルチバイト NOP を使用したコード パディング」、94 ページ)

インテル推奨、参考文献。Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2B: Instruction Set Reference, NZ , section "NOP"

GNU アセンブラー (binutils / gas 内)には、次のパターンが含まれています

f32 (Pentium までの古い Intel 互換 CPU):

alt (最新の CPU の場合、Intel および AMD と同じ):

alt_short (最新の AMD ファミリー CPU 用):

alt_long (最新の Intel ファミリー CPU 用):

私の質問は次のとおりです。マクロ、疑似ニーモニック、またはそのようなものとして、これらすべてのバイトシーケンスに広く一般的な命名はありますか? これまでのところ、次のことがわかりました。

  • AMD は、それらに名前を付けるNOPx_OVERRIDE_NOP( x= バイト長) ことを推奨しています。
  • Gas はnopw(2 バイト nop として) およびnopl(4 バイト nop として) 理解します

最近の逆アセンブラーは、これらの値をどのように出力する傾向がありますか?

関連するが重複しない質問: NOPL は x86 システムで何をしますか?

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

c - x86_64 と i686 でコンパイルすると、NOP 文字 0x90 の printf が異なる

私は2つのシステムを持っています:

  1. 3.13.0-35-generic ... x86_64 x86_64 x86_64 gcc を使用する GNU/Linux: 4.8.2
  2. 2.6.32-21-generic #32-Ubuntu ... gcc を使用する i686 GNU/Linux: 4.4.3

両方のシステムで次のコードをコンパイルしました。

問題は、「nops」配列の印刷です。

  1. 64 ビット システム #1 で実行すると、出力は希望どおりに表示されます。
  2. 32 ビット システム #2 で実行すると、printf() 出力の NOP 部分に追加の奇妙な文字が含まれます。

Hexdump システム #1

Hexdump システム #2:

したがって、追加の文字は 0x24 0xc5 0x12 です。

[Q] それはなぜですか?

ありがとう。

0 投票する
1 に答える
5041 参照

x86 - x86 マルチバイト NOP および命令プレフィックス

ちょっとした思い出として、x86 アーキテクチャは0x0F 0x1F [mod R/M]マルチバイト NOP として定義します。

今、私は 8 バイト NOP の特定のケースを見ています:

最後の 5 バイトには任意の値が含まれています。

[mod R/M]分割された3 番目のバイト は次のようになります。

modrm

  • mod = 10b: 引数はreg1+ DWORD サイズの変位です
  • reg2 = 000b: (私たちは気にしません)
  • reg1 = 100b: 引数が代わりにSIBバイト + DWORD サイズの変位であることを示します。

さて、具体例を挙げると

私が持っている

  • SIB = 0x12
  • displacement = 0x9A785634: DWORD

0x66次に、ディスプレースメントが DWORD ではなく WORD であることを示す命令プレフィックスを追加します。

0x78 0x9A私は「断ち切られ」、新しい指示として扱われることを期待しています。ただし、これをコンパイルobjdumpして結果の実行可能ファイルで実行すると、4 バイトすべて (DWORD) が変位として使用されます。

この文脈での「変位」の意味を誤解していますか? または、0x66プレフィックスはマルチバイト NOP 命令には影響しませんか?