Saya ingin tahu tentang ini, katakanlah saya punya:
00000000001 90 nop
00000000002 90 nop
00000000003 90 nop
Apakah dieksekusi persis sama dengan ini?
00000000001 0F1F00 nop dword [ds:rax]
Apa dampak yang dimiliki contoh kedua sebagai lawan yang pertama?
multi byte nop
, menghasilkan beberapa hasil.Jawaban:
Itu tergantung pada arsitektur mesin. KA-10 klasik (pdp-10) memiliki banyak kode nop, mungkin konsekuensi dari set instruksi yang sangat teratur, dan fakta bahwa semuanya diimplementasikan oleh komponen descrete, bukan oleh mikrokode. Beberapa NOP merujuk memori, ada yang melewati tes yang tidak pernah dilewati, tetapi tetap menguji kondisi yang mungkin menyebabkan lompatan, dan sebagainya. "JFCL 0," diiklankan di manual sebagai nomor tercepat.
sumber
Tampaknya contoh kedua harus berjalan lebih cepat daripada yang pertama. Pada contoh pertama, tiga instruksi terpisah akan dieksekusi. Dalam yang kedua, hanya satu instruksi. NOP multi-byte dimaksudkan untuk digunakan untuk "petunjuk" CPU (tepatnya bagaimana dan kapan tampaknya rahasia ). Mereka dapat berguna untuk tujuan pelurusan (untuk memulai loop ketat pada garis cache), tetapi saat ini mereka tidak memiliki kegunaan lain. Tidak jelas apakah CPU benar-benar mengevaluasi argumen, sehingga tidak mungkin untuk mengatakan apakah CPU meningkatkan waktu decoding instruksi atau menimbulkan penalti akses memori. Adakah yang memiliki ICE baik ingin menguji salah satunya dan melihat alamat apa yang muncul pada jejak bus?
sumber