Geçersiz işlem kodu - Illegal opcode

Bir insan tarafından oluşturulan yasadışı talimat sinyali

Bir kaçak işlemkodu da adlandırılan, belgesiz talimat , bir talimatı vermek için kullanılır CPU yine bir etkiye sahiptir CPU tasarımcısı veya imalatçı tarafından yayımlanan herhangi bir resmi belgelerinde belirtilmemiştir. Yasadışı işlem kodları, 1970'lerde tasarlanan MOS Teknolojisi 6502 , Intel 8086 ve Zilog Z80 gibi eski CPU'larda yaygındı . Bu eski işlemcilerde, çoğu CPU'daki transistörlerin kablolarının bir yan etkisi olarak bulunur ve genellikle CPU'nun birleştirilmesi amaçlanmayan işlevlerini birleştirir. Eski ve modern işlemcilerde, üretici tarafından işlemciye kasıtlı olarak dahil edilen ancak herhangi bir resmi spesifikasyonda belgelenmeyen talimatlar da vardır.

genel bakış

Yanlışlıkla oluşan yasa dışı talimatların çoğu işe yaramaz ve hatta son derece istenmeyen etkilere (bilgisayarın çökmesi gibi) sahip olsa da, bazı durumlarda bazılarının yararlı işlevleri olabilir. Bu tür talimatlar bazen zaman açısından kritik olan belirli bölümleri hızlandırmak için 1970'lerin ve 1980'lerin bilgisayar oyunlarında kullanıldı . Diğer bir yaygın kullanım, kopya koruma uygulamaları ile crackleme arasındaki süregelen savaştaydı . Burada, belirsizlik yoluyla bir güvenlik biçimiydiler ve gizlilikleri genellikle çok uzun sürmedi.

Bazı durumlarda, "yasadışı" bir talimat yeniden kullanılabilir. On Digital Equipment Corporation, PDP10 ve DECSYSTEM-20 1990'larda 1960'larda kullanıldı ana bilgisayarlar, hiçbir yoktu sistem çağrı talimatı, (işletim sisteminden istek girişi-çıkışı ve diğer hizmetlere bir araç) bunun yerine, işletim sistemleri TOPS-10 ve TOPS-20 , belirli bir yasa dışı talimatı süpervizör çağrısı olarak tanıdı.

Yasadışı talimatların kullanımıyla ilgili bir tehlike, üreticinin bunların varlığını ve işlevini garanti etmemesi gerçeği göz önüne alındığında, CPU'nun içindeki herhangi bir değişiklik veya CPU'nun herhangi bir yeni revizyonu ile ortadan kalkabilmeleri veya farklı davranabilmeleriydi. bunları yeni revizyonlarla uyumlu olmayan şekilde kullanın. Örneğin, bir dizi eski Apple II oyunu, daha yeni Apple IIc'de düzgün çalışmadı , çünkü ikincisi,  yasadışı işlem kodlarını ortadan kaldıran daha yeni bir CPU revizyonu - 65C02 - kullanıyor.

80186 , 80286 , 68000 ve onun soyundan gelenler gibi daha yeni CPU'lar, yaygın olarak bilinen/kullanılan yasadışı işlem kodlarına sahip değildir. İdeal olarak CPU, talimat akışında belirli bir istisna veya hata durumunu tetiklemek gibi bilinmeyen bir işlem kodu bulduğunda iyi tanımlanmış bir şekilde davranacaktır. İşletim sisteminin 'ın istisna veya arıza işleyici sonra genellikle programın önceden işleyicisi denetimi alacağı bu durumda kendi istisna / arıza işleyici, kurmuş sürece, hatasına neden uygulamayı sonlandırır. Yasadışı talimatları ele almanın daha az yaygın olan bir başka yolu, onları zaman ve yer kaplamaktan başka hiçbir şey yapmamaları (CPU'nun resmi NOP talimatına eşdeğer) olarak tanımlamaktır ; bu yöntem diğerlerinin yanı sıra TMS9900 ve 65C02 işlemciler tarafından kullanılır .Alternatif olarak, bilinmeyen talimatlar yazılımda taklit edilebilir (örneğin LOADALL ) veya hatta "yeni" sözde talimatlar uygulanabilir. Bazı BIOS'lar , bellek yöneticileri ve işletim sistemleri, örneğin V86 görevlerinin temel alınan sistemle ("bop") iletişim kurmasına izin vermek için bundan yararlanır.

Bu tür talimatlara karşı üretici garantisine rağmen, fuzzing gibi teknikleri kullanan araştırmalar , modern x86 işlemcilerde çok sayıda belgesiz talimatı ortaya çıkardı. Bu talimatların bazıları işlemci üreticileri arasında paylaşılıyor ve bu da Intel ve AMD'nin herhangi bir resmi belirtimde görünmemesine rağmen talimatın ve amacının farkında olduğunu gösteriyor. Diğer talimatlar, üreticilere veya belirli ürün gruplarına özeldir. x86 belgesiz talimatların çoğunun amacı bilinmemektedir.

Bugün, bu talimatların ayrıntıları esas olarak eski sistemlerin tam öykünmesi için ilgi çekicidir .

Ayrıca bakınız

Referanslar