問題タブ [cmp]

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

c - cmp je/jg アセンブリでの動作方法

cmp と je/jg がアセンブリでどのように機能するかを理解したいと思います。Google でいくつかの例を見ましたが、まだ少し混乱しています。以下に、C 言語に変換しようとしているアセンブリ コードの一部と、対応する C コードを示します。それは正しい方法で実装されていますか、それともcmpの仕組みについて間違った理解をしていますか?

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

bash - Unixで2つのテキストファイルを比較する比較機能

ファイルのすべての行を比較する unix、bash で利用可能な機能があるかどうか、誰かが教えてくれるかどうか疑問に思っていました。それらが異なる場合は、true/false または -1,0,1 を出力する必要があります。これらの cmp 関数が他の言語に存在することは知っています。私はmanページを見回してきましたが、うまくいきませんでした。利用できない場合、誰かが別の解決策を考え出すのを手伝ってくれますか?

ありがとう

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

c - 「C」は 2 つの異なる値として表示されますか?

アセンブリで2つの異なる文字を比較しようとしています(Cプログラムでアセンブリ関数を呼び出しています)。char の 1 つは構造体に属し、もう 1 つは関数を呼び出すときに渡されます。

gdb でデバッグすると、%ebx は 83 ですが、10(%edi) は 21315 です。それらを文字として出力すると、どちらも「C」に見えます。21315 を 83 に変換する方法はありますか?

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

assembly - cmpアセンブリ言語命令-ガス形式

32ビットおよび64ビットのアセンブリ言語ファイルをgasからMASM形式に変換していますが、コード内で完全に問題があると思われる命令に遭遇しました。つまり、命令が比較を実行するためにメモリから8、16、32、または64ビットをフェッチするかどうかにかかわらず、アセンブラがオペランドのサイズを知る方法がわかりません。手順は次のとおりです。

  • cmp $ 0、8(%rsp)

命令が次のいずれかであった場合、アセンブラは、レジスタに基づいてフェッチおよび比較するメモリオペランドのサイズを把握できたはずです。

  • cmp%rax、8(%rsp)
  • cmp%eax、8(%rsp)
  • cmp%ax、8(%rsp)

命令はcmpb、cmpw、cmpl、cmpqである必要があると思っていたでしょう...しかし、いいえ、私のプログラムはcmp命令だけでそれをうまく組み立てます。残念ながら、私はこのコードが何をしているのか覚えていません、そしてそれは非常に明白ではありません...したがって、これを解決するより簡単な方法は、命令が何をしているのかを知ることです。

誰か知ってる?この構文(オペランドのサイズ/タイプが指定されていない)がイミディエートオペランドでも許可される理由を誰もが理解していますか?

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

assembly - JNZおよびCMPアセンブリの説明

私が間違っている場合は私を訂正してください。

JNZこれは私の理解ですCMP

JNZZ-フラグがゼロでない場合、ジャンプが発生します(1)

CMP-2つの値が等しい場合、Zフラグが設定されます(1)、そうでない場合は設定されません(0)

オリーDBG

これは私が見ているフラッシュチュートリアルです。単純なCrackMeの解決策を教えています。

ご覧のとおり、前の命令は。と比較さALれてい47hます。それらは等しく、Z旗を立てました。(右側の[レジスタ]ウィンドウで確認できます)

次の命令はJNZです。私の理解では、Zフラグが設定されているとジャンプが発生します。Zフラグは設定されていますが、ジャンプは行われません。

なんで?

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

assembly - IA32'cmp'命令をY86に変換する方法は?

IA32からY86

ATTアセンブリ

次のIA32アセンブリコードがあります。

Y86アセンブリコードに変換しようとしています。比較命令の翻訳に問題があります:

ありがとう。

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

c - CプログラムでLinuxコマンドcmpを呼び出す

mainへのファイルのパスを2つ取得し、それらを比較するためにlinuxのcmpコマンドを呼び出すプログラムを作成しようとしています。

等しい場合は2を返し、異なる場合は1を返します。

何らかの理由で、ファイルが同じであれば2を返すことに成功しますが、ファイルが異なる場合はif(stat == 1)には入りませんが、0を返します。なぜこれが発生するのでしょうか。ターミナルを介したファイルのcmpが異なる場合、本当に1を返すことを確認しましたが、なぜこれが機能しないのですか?

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

python - この cmp 関数は、sorted() のキーとしてより適切に記述できますか?

セットから整数を並べ替えて連結することにより、最大の整数を生成する方法の問題の解決策を書いていました。最大整数の場合、整数として表現されたときのセットからの隣接する整数の任意の 2 つの配置は、スワップされるそれらの配置よりも大きいことがわかりました。すなわち、与えられた {98, 9}; 配置 998 は 989 より大きい。これは、以下に示す例のすべての構成整数に適用されます。

Python 2.7 と 3.3 で動作するコードを作成する必要があり、次の Python コードを思いつきました。

これにより、次の出力が得られます。

現在、Raymond Hettinger は、'key=' は 'cmp=' よりも優れていると述べており、私は彼に同意する傾向があります (Pycon 2013 の講演「Transforming code into Beautiful, Idiomatic Python」の前)。私の問題は、 cmp function のようにエレガントなキー関数で問題を解決できなかったことです。

何か案は?ありがとう。

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

php - 多次元配列を3つの値でソートするPHP

多次元配列を値の位置 (1 または 0 のみ)、日付、時刻で並べ替えたいと考えています。位置 = 1 の配列が最初になり、日付と時刻で並べ替える必要があります。位置 = 0 の配列は、位置 = 1 の配列の後に配置し、日付と時刻で並べ替える必要があります。

)

それが、並べ替え後の配列のあり方です。

)

いくつかの機能を試しましたが、どれも正しく機能しませんでした。位置 = 1 の配列が最後の配列であるか、すべての配列が日付と時刻でソートされています。私は自分でそれを理解することはできません。事前に感謝し、私の英語が下手である場合は申し訳ありません.

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

python - Python の cmp_to_key 関数はどのように機能しますか?

この関数hereに出会いました。

これがどのように実装されるかについて私は困惑しています-keyによって生成された関数はcmp_to_key、特定の要素が他のすべての対象要素とどのように比較されるかをチェックせずに、特定の要素がどの「位置」であるべきかをどのように知るのでしょうか?