Bu çok ilginç bir soru. Orada milyonlarca eğitim seti var, ama sadece bir avuç yaygın olarak kullanılanlar.
Bakacağım ilk şey başlangıç noktası ve kullanım amacı. ABD'de tasarlandığından şüpheleniyorsanız , öncelikle İngilizce olarak veri sayfalarına sahip işlemcileri hedeflersiniz. Asya'da tasarlandıysa, ABD mühendislerinin nadiren gördüğü seri üretilen cihazlar için kullandıkları bir dizi işlemci var. Avrupa'nın bile diğerlerinden daha yaygın olan birkaç işlemcisi var.
Daha sonra kod boyutu ve işlevselliği (kodun bir dereceye kadar ne yaptığını bildiğinizi varsayarak) bir göz atın. Birkaç megabayt kod ise, en gömülü 8 bit işlemcileri hemen hemen indirebilir ve harici belleğe sahip daha büyük cihazlara bakmaya başlayabilirsiniz. Birkaç kilobayt veya daha azsa, bunun yerine daha küçük, daha ucuz cihazlara odaklanmak istersiniz. İşlev basitse, dört bit işlemci için kod bile olabilir.
Bu noktada hafıza yapısına bakmaya değer. En azından bir program bölümü ve bir veri bölümü olması muhtemeldir. İkili bir dosyaysa (intel hex veya motorola s kaydına karşı), o zaman bellekte belirli veri parçalarının nereye yerleştirildiği hakkında çok az fikriniz vardır. Onaltılık bir düzenleyici bazı desenler gösterebilir. Onaltılık veya s kayıt biçiminde geliyorsa, amaçladığı işlemcinin bellek yapısı hakkında daha fazla bilgiye sahip olabilirsiniz. Bazı işlemciler program belleği 0 konumunda, bazıları en yüksek bellek konumunda sıfırlanır. Program EEPROM başlangıç değerlerini ayrı bir bellek konumuna içerebilir. Güvenli bir işlemci (bankacılıkta kullanılan) içinse, tek bir bellek konumu için güvenlik anahtarları bile olabilir.
Programlandığı dile bağlı olarak bazı ek ipuçlarınız olabilir. C veya benzer bir yordamsal dilde programlanmışsa, işlevler neredeyse her zaman belirli kayıtları yığına (çok sayıda itme) kaydetmek için bir dizi talimatla başlar ve orijinal değerleri yığından döndürmek için çok sayıda pop döndürmeden hemen önce . Bazı desen tanıma yapabiliyorsanız, bu dizilerin çoğunu bulacaksınız ve hangi talimatların büyük olasılıkla itme / pop talimatları, geri dönüş, vb.
Kesintileri olan gömülü bir cihazsa, büyük bir blokta, muhtemelen uygun bir yerde (örneğin 0x ??? 0 adresi) farklı bellek konumlarına bir sürü sıçrama gibi görünecek bir kesme vektör tablosu olabilir. . Atlama tabloları başka yerlerde de kullanılır, ancak atlamak için adresin ne olacağı dışında özdeş görünen bir dizi talimatı bulabilirseniz, bir atlama komutunun neye benzediğini çıkarabilir ve yine dar olabilirsiniz. aşağı seçim.
Bu noktada, en yaygın işlemci mimarileriyle başlıyorum ve bir şeyin ilişkili olup olmadığını görüyordum. x86, kol, mips, 8051, avr, pic, powerpc, Z80, 68k, 6502, vb, vb., vb.
Bu konuda yardımcı olacak herhangi bir otomatik aracın farkında değilim, ancak MAME çok sayıda işlemci mimarisine öykünüyor ve olası bir yöntem, kodu bir dizi işlemci aracılığıyla çalıştırmak ve herhangi bir şeye göre tıkladığını görmek için kayıtları izlemek. tasarımı biliyorsunuz.