問題タブ [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.
assembly - アセンブリでcmp -75、55で符号フラグが設定されないのはなぜですか?
私の教科書には、このコードを実行すると次のように書かれている表があります(イントロからdandamudiによるアセンブリまで、pg 249)。
符号フラグは設定されていませんが、オーバーフローは設定されています。これは、この章を通して私には意味がありません。私が調査したどこでも、操作の結果が負として解釈される場合に符号フラグが設定され、他の状況への参照がないことが示されています。cmp 命令は宛先を変更せずに減算によってテストすることを知っていますが、この場合、なぜオーバーフロー フラグだけが設定されるのですか? この表は、 の条件が であることを示すものでしSnum1 < Snum2
たSF != OF
。
python - cmp を使用した Python の sort()
リストをソートしようとしています。すべて 0 をリストの最後に移動します。例: [0,1,0,2,3,0,4]->[1,2,3,4,0,0,0]
そして、誰かがそれを1行でコーディングしているのを見ます
しかし、括弧内の意味がわかりません。
誰か教えてくれませんか?ありがとうございました。
awk - awk を使用して末尾に改行を追加せずにファイルを印刷する
awk を使用して一部のプログラム ファイルを処理し、デバッグ セクションを削除しています。これらのファイルの中には、末尾に改行がないものがあります。awk で改行を使用して行ごとにファイルを印刷したいのですが、改行が存在しない場合は最後に余分な改行を追加しません。
例えば
これに変わりつつあります:
この改行を追加したくない理由はcmp --silent $file $file_without_debug_sections
、元のファイルと新しいファイルのどちらを使用するかを決定するために使用しようとしているからです。私がそれを気にする理由は、コンパイラ出力でデバッグ拡張子を持つファイルの数を制限しようとしているからです。異なる場合にのみ非デバッグ バージョンを使用すると、この「デバッグ セクションの削除」プロセスによってどのファイルが変更されたかが明確になります。
要約すると、awk でファイルを 1 行ずつ処理する方法を教えてください。
私の現在のコードは次のようになります。
print
最後に を に置き換えてみましたprintf "%s", $0
。ただし、代わりにすべての行から改行を省略します。
assembly - 比較を含むアセンブリ コード
「cmp」を使用した命令で混乱しています。0x27(%esp) を指しているものを %eax と比較します。
ただし、0x27(%esp) の内部を確認しようとすると、代わりに xor が返されます。
また、%al の内容は 10 進数で 65 です。ここでcmpで何が起こっているのかわかりません。別の命令 XOR をレジスタの値と比較する命令はありますか? 結果は?
注: 0x414141 は、以前の scanf 3 A に挿入したためです。
c - ルーキー アセンブリー ボム ディフューサル cmp オペレーター
私は組み立てが初めてで、何が起こっているのか本当にわかりません。
プログラムの 5 つのフェーズへの正しい入力を見つけることによって、爆弾を解除する必要がある宿題を完了しようとしています。
質問に対する答えをオンラインで探してみましたが、探している答えを見つけるために何を検索すればよいかわかりません。
<+0>
からまでの以下のコードのすべてを理解していると思います<+35>
。cmp 演算子では、 と、レジスタに格納されているもの<+40>
を比較するために呼び出されます。比較の時点で、scanf への関数呼び出しがまだ保存されていると思います (間違っていたら訂正してください)。$0x2
%eax
%eax
gdb を使用することで、scanf 関数が次のように呼び出されたことがわかります。
scanf("%d %d", &x, &y);
では、この場合、正確には何を$0x2
参照しており (値 2 だけですか?)、2 つの項目を比較すると何が起こっているのでしょうか?
これはGAS構文だと思います。
assembly - アセンブリ内の整数値の比較
整数値を比較し、どちらの値が大きいかを示す適切なプロンプトを出力する必要があります。
以下に作成したコードは、'i' と 'j' をそれぞれ 5 と 4 に初期化します。目的は、即時値自体ではなく「変数」を比較することです。したがって、この例では、5 と 4 ではなく、「i」と「j」を cmp に入れています。
私が提起するかもしれない2つの質問:
- CMP dword [i]、dword [j]でエラーが発生します。オペコードとオペランドの組み合わせが無効です。しかし、以前の呼び出し/コード行で printf 関数を使用して値を正常に回復しました。何故ですか?
- dword [j]を即時の、たとえば CMP dword [i]、9 に置き換えようとしました。正しいプロンプトが出力されますが、プログラムが応答しなくなります。何故ですか?
私は Windows 8 Intel 32 ビットを実行していることを思い出してください。このコードは、DoSBox で実行される NASM と CMD の GCC で「コンパイル」されています。
私はまったくの初心者であり、どんな助けでも大歓迎です。ありがとうございました!
python - 文字列のリストをアルファベット順に並べ替える
質問があります。このリストを並べ替えるにはどうすればよいですか。
['Pera','mela','arancia','UVA']
このようになる:
['arancia','mela','Pera','UVA']
演習ではsorted()
、 cmp 引数を指定して関数を使用するように言われました。