問題タブ [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.
java - slf4j NOP 実装を取得してコンソールにログを記録する
slf4j NOP
実装でコンソールにログを記録したい。現在、何もログに記録していません。代わりに、コンソールにログを記録する方法はありますか?
私のユースケースは、に依存するライブラリ(アプリではない)があることですslf4j-api
。しかし、そこにあるクラスの中には、テスト目的で main メソッドを持っているものがあります。slf4j-log4j
これらの主要なメソッドを実行すると、バインディングに依存することなく、すべてのログがコンソールに送られるようになります。
ありがとう。
arduino - Arduino で 1 秒の遅延を作成する方法
こんにちは、Arduino は初めてで、1 秒の遅延を作成しようとしていますが、delay_ms 関数を完了するコードを生成する方法がわかりません。解決しようとしましたが、取得できないようです。ありがとうございます void setup() {
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 システムで何をしますか?
c - x86_64 と i686 でコンパイルすると、NOP 文字 0x90 の printf が異なる
私は2つのシステムを持っています:
- 3.13.0-35-generic ... x86_64 x86_64 x86_64 gcc を使用する GNU/Linux: 4.8.2
- 2.6.32-21-generic #32-Ubuntu ... gcc を使用する i686 GNU/Linux: 4.4.3
両方のシステムで次のコードをコンパイルしました。
問題は、「nops」配列の印刷です。
- 64 ビット システム #1 で実行すると、出力は希望どおりに表示されます。
- 32 ビット システム #2 で実行すると、printf() 出力の NOP 部分に追加の奇妙な文字が含まれます。
Hexdump システム #1
Hexdump システム #2:
したがって、追加の文字は 0x24 0xc5 0x12 です。
[Q] それはなぜですか?
ありがとう。
x86 - x86 マルチバイト NOP および命令プレフィックス
ちょっとした思い出として、x86 アーキテクチャは0x0F 0x1F [mod R/M]
マルチバイト NOP として定義します。
今、私は 8 バイト NOP の特定のケースを見ています:
最後の 5 バイトには任意の値が含まれています。
[mod R/M]
分割された3 番目のバイト は次のようになります。
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 命令には影響しませんか?