x86 mimarisindeki geçersiz komuta neden ud2 adı verildiği açıklandı
Öne çıkanlar
- x86 derleyicileri, erişilemez kod yollarına girildiğinde programı güvenle durdurmak için ud2 komutunu kullanıyor.
- 0F FF dizilimi geriye dönük ud0, 0F B9 dizilimi ise ud1 olarak adlandırıldı.
- ud2 komutu parametresiz iki baytlık yapısıyla bellek sınırlarında erişim ihlali yaşanmasını engelliyor.
x86 mimarisinde derleyiciler tarafından erişilemez kod bloklarını işaretlemek amacıyla kullanılan ud2 komutunun adlandırma kökeni paylaşıldı. Derleyiciler, çalışmaması gereken bir kod yoluna girildiğinde rastgele komutların işletilmesini engellemek ve doğrudan geçersiz işlem kodu istisnası üretmek için bu komutu yerleştiriyor. Ancak komutun yalnızca ud yerine ud2 olarak adlandırılması işlemci tasarım geçmişine dayanıyor.
Mimaride resmi olarak tanımlı geçersiz bir işlem kodu bulunmadığı dönemde geliştiriciler, işlemcide doğrudan istisna üreten 0F FF ve 0F B9 gibi bayt dizilimlerini kullandı. İki ayrı yaklaşımın yaygınlaşması sonrasında Intel yeni işlemciler tasarlarken bu dizilimlerin davranışını değiştirdiğinde mevcut yazılımların bozulduğunu tespit etti. Kullanıcıların gözlemlenebilir her davranışa bağımlılık geliştirmesi sonucu şirket, süreci standart bir kurala bağlama kararı aldı.
Intel, geçersiz işlem kodu istisnasını kalıcı ve güvenli biçimde sağlamak için mimariye resmi ud2 komutunu ekledi. Önceden fiili olarak kullanılan 0F FF dizilimi geriye dönük biçimde ud0, 0F B9 dizilimi ise ud1 olarak sınıflandırıldı. Parametre gerektirmeyen iki baytlık ud2 komutu, önceki dizilimlerdeki bellek sayfası sınırlarında erişim ihlali oluşturma riskini de tamamen ortadan kaldırıyor.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.