Ada banyak buku tentang kebaktian. Namun, mereka biasanya berurusan dengan ISA yang tidak saya pedulikan, seperti MIPS atau ARM. Saya tidak berurusan dengan arsitektur ini; tidak ada alasan bagi saya untuk mencoba mempelajarinya.
Tetapi buku-buku rakitan x86 tampaknya ... tidak ada.
Katakanlah misalnya saya sedang mencoba membuat kompiler mainan yang menghasilkan file Windows Portable Executable.
Apakah ada buku di luar sana yang merupakan standar de-facto untuk menggambarkan praktik terbaik, metodologi desain, dan informasi bermanfaat lainnya tentang perakitan x86? Bagaimana dengan buku itu yang membuatnya istimewa?
Jawaban:
Saya menggunakan Bahasa Assembly untuk Prosesor x86 sebagai buku teks ketika saya masih kuliah dan merasa sangat mudah untuk dipahami. Saya memiliki edisi keempat yang lebih tua dan membandingkannya dengan edisi keenam dan tidak melihat banyak perubahan, jadi Anda mungkin bisa mengambil salinan yang lebih tua dengan harga murah. Orang-orang mengeluh tentang penggunaan perpustakaannya sendiri untuk I / O, tetapi dia memberi tahu Anda bagaimana melakukannya dengan cara "sulit" dalam bab-bab terakhir.
sumber
Tempat yang jelas untuk dikunjungi adalah situs web Intel, tempat Anda dapat menemukan panduan pemrograman dan referensi untuk unduhan yang berisi semua yang perlu diketahui tentang arsitektur x86.
Di sini: Manual Pengembang Perangkat Lunak Arsitektur Intel® 64 dan IA-32
sumber
Seni Pemrograman Majelis adalah sumber yang bagus yang memiliki sedikit tentang pemrograman x86.
Dokumentasi ABI x64 juga berguna. Saya mencoba menemukan tautan ke versi yang ada di situs web AMDs, tetapi sepertinya saya tidak dapat menemukannya lagi, jadi saya rasa yang ini harus dilakukan.
Sesuatu yang dapat membantu [sedikit] saat belajar adalah, alih-alih mencoba menulis aplikasi lengkap dari awal dalam perakitan, alih-alih tulis sebagian besar dalam C (atau bahasa kompilasi lainnya) dan kemudian panggil sebidang kode perakitan dari bahwa. Setelah selesai, balikkan, tulis program perakitan, dan panggil beberapa fungsi C dari itu.
Sunting: Memperbaiki kesalahan ketik.
sumber
Buku yang sangat bagus untuk mempelajari x86 Assembly adalah Pentium Processor Optimization Tools . Meskipun fokus utama buku ini adalah optimalisasi kode perakitan, buku ini mengajarkan perakitan Pentium di sepanjang jalan, dan juga merupakan buku referensi yang bagus.
Sudah lama tidak dicetak tetapi tidak sulit untuk ditemukan digunakan.
Muncul dengan floppy disk yang berisi "pengoptimal kode perakitan". Itu sebenarnya tidak mengoptimalkan kode Anda, tetapi malah menghasilkan daftar komentar yang menunjukkan di mana inefisiensi seperti warung pipa terletak.
Alat yang datang dengan sebuah buku adalah versi terbatas dari produk yang lebih berfitur yang digunakan perusahaan penulis untuk dijual, tetapi karena alasan saya tidak terbiasa dengan mereka yang sudah lama keluar dari bisnis. Saya tidak tahu mengapa - saya akan berpikir alat seperti itu akan menjual seperti kue panas.
x86 secara umum adalah topik yang sangat kompleks karena ada banyak varian yang didukung oleh berbagai model mikroprosesor. Setelah Anda mengetahui dasar-dasarnya, Anda ingin berkonsultasi dengan buku data Intel atau AMD untuk chip yang tepat yang Anda targetkan. Sayangnya kode yang berjalan cepat pada satu model CPU mungkin tidak secepat pada chip yang berbeda.
sumber
Mengapa tidak mencoba wikibook - http://en.wikibooks.org/wiki/X86_Assembly . Ini memberikan awal pengantar yang baik untuk bahasa assembly.
Yang sulit tentang perakitan adalah menyadari betapa sederhananya itu, dan bahwa Anda harus tetap dengan kesederhanaan itu.
sumber