HeadlinesBriefing favicon HeadlinesBriefing.com

Mengapa instruksi x86 tidak terdefinisi disebut ud2?

Hacker News •
×

Instruksi ud2 adalah opcode yang secara arsitektur tidak terdefinisi pada x86 yang dengan andal memicu pengecualian "opcode tidak valid". Kompiler menggunakannya untuk menandai kode "tidak terjangkau", memastikan kegagalan jika eksekusi pernah mencapainya. Awalnya, tidak ada instruksi tidak terdefinisi resmi, sehingga programmer mengandalkan urutan byte seperti 0F FF atau 0F B9 untuk memicu pengecualian. Urutan-urutan ini didekode secara internal sebagai instruksi dengan dua parameter yang tidak digunakan. Ketika Intel memperkenalkan perubahan yang merusak 0F FF, perangkat lunak yang mengandalkannya gagal, mengilustrasikan Hukum Hyrum. Untuk menyediakan solusi stabil, Intel secara resmi menciptakan ud2, secara retrospektif menamai varian lama sebagai ud0 dan ud1. Berbeda dengan pendahulunya, ud2 adalah instruksi dua-byte bersih tanpa parameter, menghindari masalah dekode yang bisa menyebabkan pelanggaran akses alih-alih pengecualian opcode tidak valid. Ini menjadikan ud2 sebagai pilihan yang konsisten dan direkomendasikan untuk memicu kegagalan secara sengaja.

Penamaan mencerminkan sejarah: 0F FF menjadi ud0, 0F B9 menjadi ud1, dan instruksi resmi baru dinamai ud2. Keuntungan utama ud2 adalah jaminan arsitekturnya, memastikan perilaku yang dapat diprediksi terlepas dari kehadiran halaman memori atau detail implementasi prosesor.