- Write Your Own Retro Compiler adalah buku setebal 339 halaman yang membahas kompiler self-hosting yang berjalan di CP/M berbasis Z80 dan menghasilkan kode untuk lingkungan yang sama, lengkap dengan seluruh source code
- T3X/0 yang menjadi target implementasi adalah bahasa sederhana yang berakar pada Pascal dan BCPL, dan buku ini menyertakan manual lengkap sepanjang 20 halaman
- Diperlukan pengetahuan tentang bahasa prosedural seperti C atau Pascal serta bahasa assembly, dan akan lebih mudah diikuti bila memiliki pengetahuan dasar Z80 assembly dan CP/M
- Buku ini menjelaskan analisis leksikal, parsing, pembuatan kode, optimisasi sederhana, antarmuka BDOS, dan runtime library dengan diagram, tabel, dan contoh
- Semua kode disediakan dalam domain publik, dan tersedia juga tautan pembelian buku cetak·PDF, daftar isi, halaman contoh, serta unduhan source
Cakupan dan sasaran buku
- Write Your Own Retro Compiler adalah buku setebal 339 halaman, terbitan Lulu Press tahun 2023, dengan 91 gambar dan format 6" x 9"
- Topik utamanya adalah kompiler self-hosting yang berjalan di CP/M pada prosesor Z80 dan menghasilkan kode untuk lingkungan yang sama
- Disusun agar tetap bisa diikuti meskipun belum punya pengalaman membuat kompiler
- Bahasa implementasi T3X/0 adalah bahasa sederhana yang berakar pada Pascal dan BCPL
- Buku ini menyertakan manual lengkap T3X/0 sepanjang 20 halaman
Pengetahuan yang dibutuhkan
- Setidaknya harus memahami satu bahasa pemrograman prosedural
- Contohnya C dan Pascal
- Juga perlu memahami setidaknya satu bahasa assembly, idealnya assembly untuk CPU Z80
- Pengetahuan dasar tentang sistem operasi CP/M juga diperlukan
- Untuk pembaca yang belajar mandiri, disertakan pengantar singkat tentang bahasa assembly Z80
Komponen kompiler
- Cara kerja internal kompiler dijelaskan melalui banyak diagram, tabel, dan contoh
- Topik yang dibahas meliputi
- analisis leksikal
- parsing
- pembuatan kode
- optimisasi sederhana
-
Antarmuka BDOS
- runtime library
Tautan dan kode yang disediakan
- Semua kode dalam buku ini berada di domain publik
- Pesan buku cetak
- Pesan salinan PDF
- PDF daftar isi
- PDF halaman contoh
- Unduh source
- Halaman kode
1 komentar
Komentar Hacker News
Saya baru menerbitkan buku compiler terbaru. Ini lebih mirip versi perluasan dari “Write Your Own Compiler”, dan kali ini membahas pembuatan kode CP/M untuk Z80 alih-alih ELF pada sistem modern, sehingga banyak bagian menjadi jauh lebih sederhana
Anda bisa melihat tingkat kompleksitas seperti apa yang diperlukan untuk membuat compiler yang dapat mengompilasi dirinya sendiri dalam waktu kurang dari 10 menit pada sistem Z80 4MHz. Kodenya gratis, tetapi bukunya berbayar
Selain itu, saya juga ingin melihat buku tanpa basa-basi tentang Forth dan interpretasi ala Nils
Baru-baru ini saya membuat compiler C multi-pass dan assembler untuk CPU x86 lama seperti ini dengan TypeScript
https://github.com/Mati365/ts-c-compiler
Saya punya buku fisik Practical Compiler Construction edisi ke-2 dan cukup menyukainya. Untuk yang tertarik, saya merekomendasikan buku-buku Nils
Buku ini terlihat menarik. Namun saya masih menunggu penerus The Dragon Book yang benar-benar layak
Saya berharap ada buku yang membahas CPU modern dan, kalau bisa, optimisasi GPU juga, serta cara merancang dan menulis mesin virtual modern dengan garbage collector konkuren yang cepat. Dalam beberapa hal, itu mungkin bahkan lebih sulit daripada menulis compiler
Buku itu membahas pembangunan control flow graph, berbagai optimisasi yang bisa dilakukan di atasnya, analisis alias, static single assignment form, optimisasi berbasis dominator CFG, instruction scheduling, alokasi register, hingga pembuatan object code. Tidak seperti kebanyakan buku compiler, buku itu tidak membahas analisis leksikal, parsing, NFA/DFA, dan semacamnya
Bagi yang ingin membuat optimizing compiler yang memerlukan analisis tingkat lanjut, Static Program Analysis juga tampaknya berguna: https://cs.au.dk/~amoeller/spa/
Untuk garbage collection ada Garbage Collection handbook: https://gchandbook.org/
Jika sudah punya dasar pengetahuan tertentu, kuliah ini mungkin cocok: https://www.cs.cmu.edu/~janh/courses/411/18/schedule.html
Saya terutama menyukai cara kuliah itu memperkenalkan bentuk SSA
Topik yang lebih lanjut ada di sini: https://www.cs.cmu.edu/~15745/handouts.html
Saat sesuatu terasa seperti “sihir”, saya menganggapnya sebagai tanda bahwa seseorang dengan cerdik mengakali sesuatu yang sebelumnya dianggap sebagai batas. Belakangan saya membaca tentang fake bass, yaitu cara membuat speaker kecil tampak menghasilkan bass yang lebih besar daripada yang sebenarnya bisa dihasilkan; menarik bagaimana harmonik digunakan untuk menipu otak agar seolah mendengar nada yang lebih rendah dari kenyataannya
Terlihat menarik, tetapi ada kekurangan bahwa pembaca harus lebih dulu mengetahui atau mempelajari bahasa pemrograman baru, T3X
Saya juga penasaran apakah mungkin menulis dan mengembangkan compiler dari awal pada sistem CP/M retro yang koneksi ke dunia luarnya hanya keyboard dan layar
SubC berisi 3815 baris, sedangkan T3X/0 berisi 2330 baris
Tentu saja, Anda juga bisa memulai di CP/M tanpa alat eksternal, tetapi itu berarti Anda harus menulis compiler bootstrap dalam bahasa assembly. Itu memakan banyak waktu, tetapi sepenuhnya mungkin. Hanya saja saya ragu apakah itu akan menarik sebagai bahan bacaan
Penggunaan sintaks bergaya ALGOL, bukan sintaks bergaya C, memang agak mengejutkan, tetapi itu mungkin hanya bias saya. Memetakan
DOdanENDdi kepala menjadi{dan}bukan beban besarTutorial compiler yang melampaui tahap analisis leksikal dan parsing? Rasanya hampir yang pertama
Bercanda, tetapi memang banyak materi berhenti di sana. Saya berencana membeli ini
Akan menarik juga kalau ada buku tentang menulis sistem operasi sendiri yang mirip CP/M
Memang buku itu menunjukkan cara membuat sistem operasi microkernel bergaya Unix, tetapi Anda cukup melewati semuanya kecuali bab sistem berkas. Lalu jangan ikuti saran struktur data tree, gunakan hanya tabel datar, dan tidak usah terlalu peduli pada implementasi ukuran berkas yang akurat. Maka jadilah CP/M
Secara pribadi saya lebih suka edisi ke-2. Menurut saya edisi ke-3 menjadi rumit tanpa perlu karena kode demo Minix dibuat agar berjalan di PC akhir 1990-an, bukan PC 1980-an
Saya tidak bermaksud negatif; ini sekadar pengamatan yang mungkin membantu
Saya membaca bab gratisnya, dan beberapa bagian tampak bisa sulit bagi orang yang belum banyak memiliki pengetahuan tentang topik ini. Di bawah tiap judul, konsep dijelaskan dari awal, seperti “tata bahasa suatu bahasa adalah...”, tetapi hanya beberapa kalimat kemudian topik lanjutan seperti instruksi assembly muncul tanpa penjelasan
Jika pembaca berada pada tingkat harus mempelajari arti tata bahasa, kalimat-kalimat berikutnya mungkin sulit dipahami. Jadi jika konsistensinya sedikit ditingkatkan, kualitas buku ini akan menjadi lebih baik
Karena itu, saya pikir tidak masalah mengasumsikan pembaca sudah mengetahui hal-hal seperti instruksi assembly
Lampiran buku juga berisi pengantar singkat tentang assembly Z80, tetapi itu pun mengasumsikan pembaca sudah memahami dasar-dasar bahasa assembly
Setiap buku harus memulai dari suatu titik. Sulit menulis buku konstruksi compiler dengan asumsi pembaca sama sekali tidak punya pengetahuan pemrograman komputer. Namun bukan berarti tidak ada curse of knowledge, jadi saya pasti akan mengingat poin ini
Terlepas dari isi bukunya sendiri, saya juga suka desain web yang retro dan minimalis yang sangat pas
Ini sangat membangkitkan nostalgia. Saya teringat kenangan indah saat menaruh buku setebal 6 inci berjudul seperti “HTML 3.2 UNLEASHED!!!!” di atas meja dan membuat situs sendiri
Namun kesenangannya berakhir saat Anda harus menerapkan perubahan global ke sekitar 1500 halaman statis. Rasa sakitnya belum cukup besar untuk membuat CMS sendiri, tetapi meskipun saya membuatnya, desainnya akan tetap saya pertahankan
https://web.archive.org/web/20231210141834/http://t3x.org/t3...