X86 montajında ​​kanonik bir kitap var mı? [kapalı]


25

Mecliste pek çok kitap var. Ancak, genellikle MIPS veya ARM gibi umursamadığım ISA'larla ilgilenir. Bu mimarilerle ilgilenmiyorum; onları öğrenmeye çalışmam için hiçbir sebep yok.

Fakat x86 meclis kitapları görünmüyor.

Örneğin, Windows Portable Executable dosyalar üreten bir oyuncak derleyici oluşturmaya çalışıyorum diyelim.

X86 montajında ​​en iyi uygulamaları, tasarım metodolojilerini ve diğer yararlı bilgileri tanımlamak için fiili standart olan bir kitap var mı? Peki ya bu kitap onu özel kılıyor?


Ne kadar montaj tecrübeniz var? Basit C programlarını montajda derlemek için GCC'yi optimizasyon olmadan kullanmayı denediniz ve ardından kodu C programına geri döndürdünüz mü?
Brian

10
@Brian: Bunu yapmadan önce montajı bilmem gerekiyordu.
Billy ONeal

X86 komut setinin bir kopyasını gördüm. 2 cilt ve muhtemelen şimdiye kadar gördüğüm en büyük kitap. İyi eğlenceler :)
AngryBird

2
Billy, eğer hiç montaj bilmiyorsan, o zaman herhangi biri genel fikir edinmek için başlamaktan bayağı iyi olurdu. Montaj mimariye son derece yakın olduğundan montaj talimatları mimariye özgü tasarımları büyük ölçüde yansıtır. X86 montajıyla başladım ve Kip Irvine'in "Intel Tabanlı Bilgisayarlar için Montaj Dili" ni okudum. Kitap aslında bir topluluk kolejindeki çevrimiçi bir sınıfla eşleştirildi. Ne tür bir öğrenci olduğunuzu bilmiyorum ama rehberli öğretimin öğrenme için en uygun olduğunu düşünüyorum.
Brian

@Brian: "Bunlardan herhangi biri" ile ne demek istiyorsun? "Onlar" ın ne olduğunu anlamıyorum - herhangi bir kitap? Montajcı var mı? ISA var mı? MIPS assembler ile zaten oynamıştım; Yine de x86'da hiçbir şey bulamıyorum.
Billy ONeal

Yanıtlar:


18

Ben kullanılan x86 işlemcileri için Meclis Dili Üniversitedeyken ve anlaşılması çok kolay buldum zaman ders kitabı olarak. Ben eski dördüncü basım ve onu altıncı basımla karşılaştırdım ve fazla bir değişiklik fark etmedim, bu yüzden muhtemelen ucuz bir eski kopya alabilirsiniz. İnsanlar kendi kitaplıklarını G / Ç için kullandıklarından şikayet ediyorlar, ancak size daha sonraki bölümlerde nasıl "zor" yapılacağını anlatıyor.


1
Çok iyi kitap!
Kodlayıcı

Irvine'in kitabının 5. basımını "Intel Tabanlı Bilgisayarlar için Montaj Dili" başlıklı kitabında okudum. :)
Brian

1
Bence bu oldukça kötü bir öneri, çünkü ikinci baskının çoğu, yazarların kendi ezoterik sistemi olan ve özellikle C'nin bastarize edilmiş bir versiyonu olan Yüksek Seviye Meclisine özgü olduğundan, yayınlanan ilk basımı hiç okumadım. Sitesinde ücretsiz olarak bulabileceğiniz ve hiç yayınlanmayan dos versiyonu da harika bir kitap. Aynı zamanda yaklaşık% 50 daha uzun ve HLA ( toplam zaman kaybı) hakkında hiçbir şeyden yoksun .
Evan Carroll

1
@EvanCarroll Kafam karıştı. Bağlantıyı yanlış kitaba değiştirdiniz, daha sonra bağlantıyı değiştirdiğiniz kitabı eleştirdiniz. Bu istemeden mi oldu?
Merlyn Morgan-Graham

1
Tamamen benim hatam. @ MerlynMorgan-Graham, hem onu ​​yakalama hem de düzeltme için size iyi gelir.
Evan Carroll


9

Montaj Programlama Sanatı, x86 programlaması hakkında oldukça fazla olan mükemmel bir kaynaktır.

x64 ABI belgeleri de kullanışlıdır. AMD'nin web sitesinde yer alan versiyona bir bağlantı bulmaya çalışıyordum, fakat artık bulamıyorum, bu yüzden sanırım bunu yapmak zorunda kalacak.

Öğrenirken oldukça [biraz] yardımcı olabilecek bir şey, montajda sıfırdan tam bir uygulama yazmaya çalışmak yerine, bunun yerine çoğunu C'ye (ya da başka bir derlenmiş dile) yazmak ve daha sonra bir montaj kodu yığınını çağırmaktır. söyledi. Bunu yaptıktan sonra, tersine çevirin, bir montaj programı yazın ve bundan bazı C işlevlerini çağırın.

Düzenleme: Bir yazım hatası düzeltildi.


1
Başka bir öneri: C'ye basit bir program yazın, onu derlemeye hazırlayın, temizleyin, böylece montajcınız toplayabilsin, sonra da montaj sürümünü geliştirin. Asgari işlevsellik elde etmek için iyi bir yoldur (klavyeden oku, konsola yaz).
TMN

4

X86 Düzeneğini öğrenmek için çok iyi bir kitap Pentium İşlemci Optimizasyon Araçları . Kitabın ana odağı montaj kodunun optimizasyonu olsa da, yol boyunca Pentium montajını öğretir ve aynı zamanda iyi bir referans kitabıdır.

Baskısı çok uzun, ancak kullanılmış bulmak zor değil.

Bir "montaj kodu iyileştirici" içeren bir disket ile birlikte gelir. Kodunuzu gerçekten optimize etmez, ancak bunun yerine, boru hattı tezgahları gibi verimsizliklerin nerede olduğunu gösteren bir yorum yapar.

Bir kitapla gelen araç, yazarın şirketinin sattığı daha özellikli bir ürünün sınırlı bir versiyonudur, ancak nedenleri ile aşina olmadığımdan dolayı işsizler. Nedenini bilmiyorum - böyle bir aracın kek gibi satacağını düşünürdüm.

Genelde x86, farklı mikroişlemciler modelleri tarafından desteklenen birçok değişken olduğundan, çok karmaşık bir konudur. Temel bilgileri öğrendikten sonra, hedeflediğiniz hassas yonga için Intel'in veya AMD'nin veritabanına bakmak isteyeceksiniz. Ne yazık ki, bir CPU modelinde hızlı çalışan kod, farklı bir yonga üzerinde hızlı olmayabilir.


Gerçekten performans için gitmiyor; sadece ikili dosyalar üretebilmek istiyorum. Yine de bir göz alacağım :)
Billy ONeal 22:11

2
Ayrıca, yalnızca montaj işlem kodlarını değil, belirli bir montajcının nasıl kullanılacağını da öğrenmeniz gerekir. Her montajcı işleri tamamen farklı yapar. Çok fazla montaj kodu yazacaksanız, insan kodlayıcılarını göz önünde bulundurarak masm kullanın. Eğer sadece satır içi düzeneğin küçük parçacıklarını yazacaksanız, gcc'yi GNU ile (gaz olarak da adlandırılır) satır içi düzeneği olarak kullanabilirsiniz. GNU olarak 'sözdizimi masmlardan tamamen farklıdır. Öncelikle gcc için arka uç olarak kullanılmak üzere yazıldığı gibi, çalıştırılabilir kod üretmeyi yapmak ve böylece insan kodlayıcıların istediği birçok özelliği sağlamaz.
Mike Crawford

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.