1 poin oleh GN⁺ 2025-02-08 | 1 komentar | Bagikan ke WhatsApp
  • Assembly bersentuhan langsung dengan struktur CPU, jadi pilihan pertama untuk dipelajari sangat penting; 6502 adalah platform pemula yang memiliki struktur sederhana sekaligus ekosistem nyata
  • Dengan hanya 6 register dan 56 instruksi asli, Anda bisa cepat memahami konsep dasar seperti register, load/store, operasi logika dan aritmetika, serta percabangan
  • Karena ini adalah CPU nyata yang digunakan di Apple II, Commodore VIC 20, Commodore 64, BBC micro, dan lainnya, pembelajaran berbasis praktik dengan emulator, perangkat replikasi, dan materi gratis menjadi mudah
  • Easy 6502 menyediakan assembler dan simulator berbasis JavaScript yang bisa langsung dipakai menulis kode di web, sehingga cocok untuk mendapatkan gambaran dalam waktu singkat
  • Z80, RISC modern, dan x86-x64 juga layak dipelajari, tetapi untuk langkah pertama, 6502 yang kompleksitasnya rendah membantu mengurangi beban belajar

Mengapa 6502 cocok untuk pemula

  • Pemrograman assembly punya keterhubungan dengan hardware yang lebih kuat dibanding bahasa tingkat tinggi, sehingga CPU pertama yang dipelajari sangat memengaruhi tingkat kesulitan belajar
  • Assembly 6502 bukanlah lingkungan yang nyaman untuk menulis aplikasi praktis masa kini
    • Jika tidak tertarik pada pemrograman retro itu sendiri, tidak perlu berlama-lama di 6502
  • Keunggulannya sebagai platform pemula adalah kesederhanaan dan keberadaan nyatanya
    • Berkat struktur yang sederhana, konsep dasar bisa dipelajari dengan cepat
    • Ada banyak perangkat nyata, emulator, buku, dan materi online, sehingga jalur belajar mudah ditentukan
  • Register dan instruksi tetap sedikit

    • 6502 hanya memiliki 6 register
      • 1 akumulator
      • 2 register indeks
      • register status
      • register stack
      • program counter
    • Satu-satunya register 16-bit di 6502 adalah program counter
    • Jumlah register yang sedikit memang menjadi batasan untuk menulis aplikasi nyata, tetapi membantu memahami peran dan cara kerja register
    • Set instruksi asli 6502 hanya mencakup 56 instruksi
    • Dengan kumpulan instruksi kecil ini pun, tipe-tipe instruksi utama bisa dipelajari
      • load/store
      • operasi logika
      • operasi aritmetika
      • percabangan
    • Tipe-tipe ini masih ada dalam bentuk tertentu di CPU modern
    • Pada x86-x64, menghitung jumlah register dan instruksi saja tidak mudah, dan set instruksi RISC modern seperti ARM pun sulit disebut kecil dan sederhana

Ekosistem nyata dan pilihan lain

  • Ekosistem yang tua tetapi masih hidup

    • 6502 diperkenalkan oleh MOS Technology pada pertengahan 1970-an sebagai versi Motorola 6800 yang lebih murah dan disederhanakan
      • Tim yang sama sebelumnya mengembangkan Motorola 6800
    • Setelah itu, 6502 cepat populer dan digunakan di berbagai mikrokomputer terkenal
      • Apple II
      • Commodore VIC 20
      • Commodore 64
      • BBC micro
    • Emulator untuk perangkat-perangkat ini mudah ditemukan, dan sebagian juga memiliki perangkat replikasi modern
    • Produk penerus 6502 masih diproduksi pada saat tulisan ini dibuat, dan perangkat baru seperti Neo6502 dari Olimex juga menjalankan keluarga 6502
    • Materi belajar gratis banyak tersedia di internet, dan sebagian besar bisa ditemukan di 6502.org
  • Materi belajar yang bisa langsung dipraktikkan

    • Easy 6502 adalah buku elektronik karya Nick Morgan, cocok untuk pembelajar yang ingin mencoba 6502 secara singkat
    • Selain teks dan gambar, materi ini mencakup assembler dan simulator 6502 yang ditulis dalam JavaScript
      • Anda bisa langsung menulis kode assembly 6502 sederhana di halaman web
    • Visual6502.org lebih merupakan materi yang memperlihatkan kesederhanaan 6502 secara visual daripada alat belajar assembly
  • Perbedaan dengan kandidat pemula lain

    • CPU virtual yang dibuat untuk pendidikan dapat memiliki set instruksi yang bersih dan “sempurna”, tetapi sulit memiliki materi belajar dan komunitas sekaya 6502
    • CPU retro seperti Z80, 6809, dan 68000 juga merupakan pilihan yang baik
      • Ketiga CPU tersebut dinilai lebih baik daripada 6502 untuk pemrograman serius
      • Namun untuk mempelajari konsep dasar, kesederhanaan 6502 lebih menguntungkan
    • Z80 memiliki jauh lebih banyak register daripada 6502 dan juga memiliki set register alternatif, sehingga kurang mudah untuk memulai
    • Arsitektur RISC modern seperti ARM, MIPS, dan RISC-V pada suatu titik adalah hal yang harus dipelajari oleh programmer assembly yang serius
      • Namun, sebagai pengantar, arsitektur-arsitektur ini tidak ideal
      • Kesederhanaannya lebih terkait dengan implementasi internal chip daripada set instruksi
    • Kebanyakan mikroprosesor modern diprogram dengan bahasa tingkat tinggi, dan pengalaman menulis instruksi assembly langsung bukan prioritas tinggi dalam desain CPU
    • Untuk memuat konstanta 64-bit ke register di ARM64, mungkin diperlukan 4 instruksi termasuk bit shift
      • Proses memuat konstanta ke register di 6502 jauh lebih sederhana dibanding itu
    • x86-x64 bisa dianggap sebagai set instruksi paling populer di desktop dan server modern, sementara ARM sedang mengejar
      • Karena tidak dibatasi ukuran 32-bit dan memiliki instruksi kaya dengan jumlah operand variabel, dalam beberapa hal coding di x86-x64 bisa lebih mudah daripada ARM
      • Namun bagi pemula, x86-x64 tetap sangat kompleks, dan sejarah 40 tahun tidak membuat x86-x64 menjadi lebih sederhana

1 komentar

 
GN⁺ 2025-02-08
Pendapat Hacker News
  • Sulit untuk setuju bahwa kesederhanaan 6502 lebih baik daripada 68000
    68000 memang punya lebih banyak register dan lebar tipe data yang lebih besar, tetapi strukturnya seragam. Pada dasarnya ada dua jenis, A dan D, yang berulang sebagai D0~D7 dan A0~A7, jadi apa yang bisa dilakukan di D0 juga bisa dilakukan di D3. Kesederhanaan struktur harus diseimbangkan dengan kesederhanaan pemrograman, dan pada 6502, begitu menulis program yang sedikit saja rumit, kita terus terbentur batasan
    Cara terbaik untuk belajar mengakali keterbatasan mesin kecil justru adalah dengan mengabaikan keterbatasan itu dan menjadi insinyur perangkat lunak yang terampil. Jika masih pemula, lebih baik mulai dari sisi yang memiliki lebih banyak mode pengalamatan, lebih mudah menangani array besar, serta register dan lebar integer yang lebih lapang

    • Mirip, tetapi saya melihatnya dari sudut pandang berbeda. Selama beberapa dekade terakhir saya terutama menangani 6502, 68k, z80, dan x86/64 di ranah demo, dan saya sempat bertanya-tanya apakah tulisan ini ditulis oleh AI
      Ada klaim bahwa 6502 sederhana karena punya 6 register, tetapi setelah menyentuh 6502 selama seminggu saja, kita akan tahu bahwa pada dasarnya kita berurusan dengan tiga register. Karena itu juga muncul julukan CPU semaphore
      6502 itu menyenangkan dan rapi, tetapi tidak cocok jika menginginkan pendekatan modern. Jika ingin mengikuti jalan kejayaan gaya 90-an, lebih baik mulai dari MIPS, atau langsung mulai dengan Neon. Z80 pun, jika melihat register dan kompleksitasnya, masih bisa dianggap lebih mirip dengan hal-hal yang ditemui hari ini
      Assembly modern sendiri pada dasarnya tidak rumit. Jika mulai dari FASM, itu tidak sulit, tetapi pendekatan level rendah selalu cepat menjadi kompleks. Lalu kita mulai membuat makro, dan pada akhirnya menumpuk sesuatu yang mirip C versi miskin buatan sendiri
    • Belajar mengakali keterbatasan mesin kecil adalah tahap yang baik untuk menjadi insinyur perangkat lunak/perangkat keras yang terampil
      Keunggulan sistem kecil adalah kita bisa memahami semuanya secara menyeluruh, mulai dari silikon, sistem operasi, hingga perangkat lunak
      6809 lebih sederhana daripada 68K, lebih kuat daripada 6502, dan ortogonalitasnya bagus, tetapi tidak memiliki basis perangkat lunak pada tingkat yang sama. Menurut saya Motorola mengambil arah yang cukup baik pada set instruksi 6809 dan 68K serta arsitektur dari sudut pandang programmer. Saya ingat PDP-11/VAX dan NS32K juga cukup ortogonal dengan cara serupa
    • 6502 lebih baik daripada Z80 untuk assembly mainan, tetapi itu bukan pujian besar. Sulit juga untuk mengatakan bahwa ia jelas lebih baik daripada set instruksi AVR 8-bit
      Jika memikirkan platform yang lebih modern, ada argumen kuat untuk mengajarkan RISC-V daripada MC68k. Jika hanya melihat set instruksi integer dasarnya, RISC-V sangat sederhana dan elegan, sekaligus mirip dengan arsitektur modern seperti ARM, Aarch-64, dan MIPS. Ada varian 32-bit maupun 64-bit, dan dokumentasi resminya juga mudah diakses
      MC68k punya terlalu banyak kekhasan yang tidak terlalu relevan hari ini. Keunggulannya mungkin sebatas pernah dipakai di berbagai platform perangkat keras dan masih punya komunitas retro yang aktif, tetapi itu lebih merupakan faktor menarik daripada relevansi nyata
    • 68K juga agak merepotkan karena bus 24-bit, batasan alignment, dan dukungan pengindeksan array yang setengah-setengah. Tidak adanya faktor skala juga menjadi ganjalan
      68020 hampir mendekati batas maksimal bagaimana arsitektur set instruksi bisa menjadi dekat dengan C, dan pengalaman memakainya sangat bagus
    • Saya belajar pemrograman dengan 6510, tetapi setuju bahwa set instruksi 68000 jauh lebih baik serta lebih mudah dibaca dan dipelajari. Kalau saya pun akan memilih 68000
      Namun, memakai 65XX pada komputer Commodore awal sangat memuaskan. Karena tidak ada proteksi memori, kita bisa langsung mengubah memori video, mengutak-atik sprite, font, border, dan interrupt, serta menulis kode yang memodifikasi dirinya sendiri. Assembly 68000 di Amiga adalah lingkungan yang lebih aman dan terkendali
  • Menurut saya, 6502 bukan pilihan yang baik sebagai set instruksi pertama untuk belajar assembly. Anda akan menghabiskan banyak waktu berurusan dengan keunikan arsitektur yang cerdik tetapi punya cacat mendalam.
    Idiom-idiom workaround itu tidak banyak terbawa dengan baik ke arsitektur yang lebih baik, yang tidak terikat oleh keterbatasan alat dan anggaran MOS saat itu.
    Jika ingin mempelajari set instruksi yang kecil tetapi kuat dan punya sedikit keunikan, ARM v6M lebih baik. Sampai sekarang masih diproduksi secara bermakna, dan dukungan debugger, compiler, assembler, serta linker di toolchain open source modern juga bagus.
    Jika Anda mengutamakan keterbukaan arsitektur dan bisa menerima platform yang masih kurang matang, pilihlah MCU RISC-V. Kalau tidak bisa memutuskan, pilih RP2350.
    Set instruksi ARMv6M kecil, dan untuk memuat konstanta pun, jika memakai load relatif PC seperti yang didokumentasikan, tidak perlu rangkaian instruksi yang panjang dan membosankan. Tidak perlu kode yang memodifikasi dirinya sendiri atau mengindeks memori lewat zero page, dan lebar register sama dengan ruang alamat. Karena 32-bit, justru lebih mudah dipelajari dan diajarkan dibanding kebanyakan set instruksi 8/16-bit. Kalau terdengar membosankan, tidak perlu khawatir. ARMv6 juga punya cukup banyak keunikan untuk code golf.

    • Saya suka arsitektur 6502, tetapi jika pemula yang tertarik pada komputer lama belum punya pengalaman assembly sebelumnya, biasanya saya arahkan ke pilihan lain.
      Saya mulai dengan assembly PIC16 dan pernah sedikit menyentuh beberapa arsitektur, tetapi dari sisi kerapian, MIPS32 adalah yang paling saya sukai.
      Sebagai tambahan kecil, 6502 baru, MCU core 6502, dan chip periferal buatan Western Design Center masih bisa dibeli. Tempat seperti Mouser juga menjualnya.
      https://www.mouser.com/c/?m=Western%20Design%20Center%20%28W...
    • Dulu saya banyak menulis assembly 6502, dan cukup banyak waktu habis untuk berurusan dengan arsitektur 8-bit.
      Sekadar mengalikan dua angka 16-bit saja membutuhkan segumpal kode. Tidak terlihat berguna jika programmer baru harus bergulat dengan hal seperti ini.
      Seperti yang dikatakan, set instruksi ARM awal adalah pilihan yang baik.
    • ARM juga punya beberapa titik menyakitkan bagi pemula karena cara nilai immediate dimasukkan ke dalam instruksi. Bisa tidak intuitif mengapa sebagian nilai immediate atau offset bisa dipakai sementara yang lain tidak.
      Tentu ini masalah yang muncul di banyak bahasa assembly, tetapi untuk awal, saya ingin memulai dari set instruksi yang tidak punya masalah seperti ini.
    • Saya bahkan tidak bisa menebak apa yang dimaksud dengan “punya cacat mendalam”.
    • Saya terus teringat seri breadboard 65C02 dari Ben Eater[1]. Apakah ada cara untuk mereplikasi hal yang dilakukan di video itu dengan CPU ARM juga?
      [1] https://youtube.com/playlist?list=PLowKtXNTBypFbtuVMUVXNR0z1...
  • Sebagai seseorang yang telah mengajar assembly kepada mahasiswa sarjana selama beberapa tahun, saya setuju bahwa 6502 bagus untuk pemula. Namun alasannya bukan semata-mata keunggulan bahasa 6502 itu sendiri.
    Saya pernah mengajar 68K, MIPS, ARM, x86, dan lainnya; alasan terbesar respons mahasiswa bagus saat mengajar 6502 adalah konteks di sekitar CPU-nya. Dengan 6502, kami memprogram mesin nyata yang mudah dipahami, yaitu Nintendo Entertainment System.
    I/O memory-mapped dasar, tanpa sistem operasi, tanpa instruksi pipeline, tanpa delay slot, tanpa jaringan, tanpa noise yang tidak perlu. Hampir seperti kotak sederhana yang di dalamnya ada clock, CPU, beberapa alamat memori, chip pendukung, dan I/O yang dipetakan ke alamat memori. 6502 bukan set instruksi paling sederhana, tetapi kesederhanaan sistem ini sangat membantu.
    Keterbatasan 6502 juga penting agar mahasiswa memahami mengapa instruksinya berbentuk seperti itu. CPU dirancang dan dirangkai dalam batasan masa itu, dan hal tersebut tercermin dalam cara pemrogramannya.
    Memilih 6502 dan NES untuk pendidikan pemula terbukti sukses. Bukan karena 6502 itu sendiri, melainkan karena 6502 memaksa sistem yang memindahkan bit menjadi sederhana.
    Setelah mahasiswa menyentuh 6502 dan melihat tile NES bergerak di layar, mudah untuk berkembang secara alami ke bagaimana 68000 menangani hal secara berbeda, bagaimana MIPS muncul, bagaimana pipelining dan delay slot dimanfaatkan, serta bagaimana membandingkan perbedaan RISC dan CISC. Jika fondasinya ada, perkembangan berikutnya menjadi sangat sederhana.

  • Jika bukan untuk mempelajari set instruksi yang masih dipakai saat ini, agak mengejutkan bahwa assembler PDP-11 hampir tidak pernah disebut sebagai titik awal yang baik.
    Mungkin karena PDP-11 adalah yang pertama benar-benar saya pelajari, tetapi mikroprosesor awal semuanya terasa seperti satu langkah mundur. Saya memang memakai assembly Z80 selama beberapa tahun, tetapi sekarang tidak akan merekomendasikannya. Set instruksinya tidak ortogonal, dan 6502 punya terlalu sedikit register sehingga sulit memberi rasa yang tepat tentang menulis assembly.

    • Saat ini cukup sulit mendapatkan PDP-11, dan tidak mudah juga memperoleh sistem operasi, compiler, dan sebagainya.
      Jika Anda menyukai PDP-11, di MSP430 Anda bisa mendapatkan keunggulan serupa dalam bentuk yang sedikit terbatas, dan di 68000 dalam bentuk yang sedikit diperkuat.
      Namun sebenarnya yang terbaik adalah melupakan artefak semacam itu dan belajar RISC-V. Atau pilih salah satu dari berbagai varian Arm. Secara pribadi, saya punya keterikatan emosional dengan ARM7TDMI yang banyak saya gunakan pada pertengahan 2000-an. Mode Thumb mungkin sedikit lebih mudah dipelajari daripada mode Arm asli, tetapi keduanya tidak sememuaskan RISC-V.
    • Setuju. PDP-11 jauh lebih nyaman, sampai tidak bisa dibandingkan.
      Bisa saja orang berargumen bahwa mode pengalamatannya secara konseptual lebih rumit daripada RISC, tetapi dalam praktiknya mode pengalamatan 6502 kemungkinan besar lebih sulit dipahami daripada PDP-11.
    • Dengan mempelajari assembly PDP-11, Anda juga memahami mengapa sebagian idiom C berbentuk seperti itu. Misalnya, pointer ke pointer adalah mode pengalamatan native yang langsung sesuai dengan arsitekturnya.
    • Set instruksi -11 adalah mahakarya rekayasa. DEC punya semua yang diperlukan untuk sepenuhnya mendominasi bisnis mikrokomputer.
      Namun DEC mengabaikan peluang itu, dan IBM mengambil posisi tersebut dengan set instruksi 8086 yang kaku.
      Sekarang tidak ada lagi tujuan untuk mempelajari -11.
  • Saya tidak begitu paham bagaimana bisa sampai pada kesimpulan seperti itu. Saat siswa pertama kali mengenal pemrograman komputer, masuk akal untuk memulai dengan bahasa mainan/kecil yang tidak punya kegunaan nyata. Namun assembly seharusnya bukan bahasa pertama yang dipelajari
    Assembly adalah alat yang sangat praktis, dan biasanya banyak dipakai untuk debugging serta reverse engineering. Lalu mengapa harus menghabiskan waktu untuk assembly dari platform yang sudah lama hilang?
    Cara terbaik mempelajari assembly adalah bereksperimen. Tulis kode dengan bahasa favorit, lalu lihat keluaran assembly perantaranya, atau intip bagian dalamnya dengan objdump atau gdb. Anda juga bisa mengubahnya dan melihat apa yang terjadi
    Bisa juga memakai emulator komputer lama, tetapi itu lebih sulit. Bahkan untuk menampilkan satu teks di layar, Anda harus mempelajari arsitektur komputer itu, perangkat kerasnya, hingga fungsi ROM-nya, dan pengetahuan ini hampir tidak berlaku untuk Linux atau Windows di x86-64

    • Saya sempat kesulitan memahami C, lalu baru menemukan jalan setelah belajar heksadesimal dan pemrograman assembly di 68HC11
      Bagi pemula total, konsep seperti pointer terlalu abstrak dan sulit dipahami, tetapi setelah belajar pengalamatan tidak langsung di assembly, tiba-tiba menjadi jelas mengapa C memiliki pointer dan bagaimana cara kerjanya
      Sebelumnya saya terutama memakai Python, yang jauh lebih diabstraksikan. Orang sering lupa bahwa fitur seperti pointer ada karena keterbatasan perangkat keras dan performa. Jika tidak tahu apa yang sebenarnya dilakukan CPU di dalamnya dan mengapa, pemahaman intuitif akan terbatas
    • Setelah beberapa bulan mengutak-atik hardware dan memprogram assembly, Anda akan memahami cara kerja dasar komputer dengan cara yang sama sekali berbeda dari bahasa tingkat tinggi
      Sejak SMA saya tidak pernah menulis satu baris assembly pun, tetapi berkat pemahaman dasar tentang bagaimana operasi dieksekusi dan bagaimana register bekerja, saya jauh lebih mudah memahami alasan, syarat, dan pengecualian dalam pemrograman serta optimasi. Saya juga jadi lebih menghargai kode yang rapi dan efisien
    • Bahkan ketika kami masih anak berusia sepuluh tahun, kami cukup berhasil menjadikannya bahasa kedua setelah buku komik pemrograman BASIC
      Jika ingin sedikit merasakan masa lalu, ada di sini
      https://www.atariarchives.org/
    • Jalur untuk belajar pemrograman kira-kira ada dua. Pendekatan top-down, dari konsep abstrak turun ke implementasi nyata, misalnya SICP, dan pendekatan bottom-up, yang dimulai dari kode level rendah yang konkret lalu membiarkan abstraksi muncul secara alami
      Karena saya belajar elektronika, saya secara alami mulai dari assembly (Motorola HC11). Menjelang akhir kursus, semua orang secara mandiri membuat macro untuk hal-hal seperti for loop, dan dari sana perpindahan ke C terasa alami. Di akhir kursus C, pemrograman berorientasi objek ala C juga muncul secara alami, lalu berlanjut ke kursus C++ berikutnya
      Kekurangan pendekatan ini adalah tidak ada jalur bertahap menuju paradigma fungsional atau paradigma non-imperatif pada umumnya. Selain itu, muncul kebiasaan untuk terus memikirkan bagaimana bahasa bekerja di dalam, dan kadang itu bisa kontraproduktif. Bahkan ketika mencoba belajar Haskell, kepala saya lebih dulu bergerak untuk memahami bagaimana interpreter-nya bekerja
      Belajar assembly bukan hanya belajar bahasanya, tetapi juga memahami bagaimana mesin bekerja, seperti bus, memory-mapped peripheral, dan sebagainya. Pada platform lama, bagian ini jauh lebih sederhana. Jadi meskipun instruksi ARM mungkin lebih mudah dipelajari daripada instruksi CISC milik HC11, semua hal lainnya lebih ramah bagi pemula di HC11
    • Pada compiler dmd, jika mengompilasi dengan -vasm, assembly yang dihasilkan akan ditampilkan selama proses kompilasi. Ada juga yang menilai fitur ini tidak terlalu bagus dengan alasan objdump atau -S sudah cukup, tetapi kalau mencobanya langsung, Anda akan tahu mengapa ini nyaman. Sebab yang langsung dicetak hanyalah assembly, tanpa boilerplate besar untuk membuat object file
      Misalnya, saya sedang mengerjakan code generator AArch64, lebih spesifik lagi pembuatan kode floating-point, dan ada fungsi seperti ini
      float test(float a, float b) { return a * b; }
      Jika dikompilasi dengan dmd -c test.c -arm -vasm, yang keluar adalah alamat, instruksi heksadesimal, mnemonic instruksi, dan URL spesifikasi instruksi
      Saya tahu kodenya belum sepenuhnya benar. Sudah saya bilang masih dikerjakan :-)
  • Bagi saya, set instruksi 6502 adalah bahasa assembly pertama yang bagus
    Pada 1977 saya tinggal di sebuah pondok kecil di Oregon, dan karena bosan saya membeli Apple II. Dalam setahun, saya mengerjakan program yang kemudian menjadi Apple Writer, dan semuanya ditulis dalam assembly
    https://en.wikipedia.org/wiki/Apple_Writer
    Di sini dikatakan assembly 6502 cukup kasar dan sulit ditulis, dan kalau melihat ke belakang saya setuju. Namun pada 1977, saya tidak punya pembanding
    Karena Apple II tidak memiliki bahasa tingkat tinggi yang cepat, program kecil saya menjadi produk Apple berkat kurangnya alternatif
    Kalau dipikir-pikir, Apple Writer muat dalam 8KB RAM, tetapi benar-benar melakukan pekerjaan. Bahkan ada bahasa macro yang dipakai orang untuk mengolah daftar alamat
    Baru-baru ini saya menaikkan sistem utama saya menjadi 96GB RAM agar lebih mudah menjalankan DeepSeek secara lokal, dan saya juga punya RTX 4090. Tiba-tiba saya sadar bahwa dengan RAM ini, hampir 12 juta Apple Writer bisa dimuat di dalamnya
    Rasanya cukup surealis, tetapi sejak 1977 saya sudah beberapa kali punya alasan untuk mengatakan hal seperti ini

  • Untuk bahasa assembly pemula, saya lebih menyukai RISC-V. Desainnya bagus dan lebih intuitif, ada dukungan bahasa serta alat modern seperti GCC, LLVM, dan Rust, serta berjalan di QEMU dan hardware yang benar-benar bisa dibeli

    • ARMv7 juga memenuhi kriteria ini dan enak dipakai. Bisa digunakan secara inline di dalam BBC Basic pada Acorn Archimedes
    • Terakhir kali saya cek, RISC-V belum memiliki macro assembler yang benar-benar layak disebut demikian
    • Kalau soal “hardware yang benar-benar bisa dibeli”, terakhir kali saya cek 65C02 juga masih diproduksi dan dijual
      Bahkan bisa berjalan pada 14MHz
  • Tema tentang kesederhanaan set instruksi 6502 secara pribadi terasa mengganggu bagi saya. Orang yang menganggap kesederhanaan seperti itu bagus tampaknya belum pernah melangkah lebih jauh dari Hello World
    Memprogram sesuatu dengan tingkat kompleksitas menengah di 6502 itu sulit. 8-bit terlalu terbatas; lihat saja, misalnya, pengalamatan layar pada Commodore 64. Perkalian dan pembagian harus diimplementasikan sendiri, dan penjumlahan/pengurangan 16-bit memang sederhana, tetapi sama sekali tidak sepele jika ingin efisien
    Jika tujuannya mempelajari assembly dasar, platform 8086+DOS jauh lebih mudah ditangani sebagai perbandingan

    • Dalam konteks perkenalan pertama dengan assembly, justru bagus kalau harus mengimplementasikan perkalian/pembagian sendiri
      Menerjemahkan berbagai algoritma perkalian dan pembagian ke assembly adalah cara yang sangat baik untuk belajar
    • Keterbatasan adalah bagian dari kesenangannya. Assembly 8086 tidak semenarik itu
      Lagi pula, kalau yang dipelajari adalah sesuatu yang tidak relevan dengan masa kini dan bukan x86-64, RISC-V, atau ARM, saya kurang paham apa keunggulan 8086
    • Assembly yang paling banyak saya gunakan mungkin 8086, tepatnya 80286 dalam real mode
      Saya menikmati setiap momennya, dan register segmen juga tidak terlalu mengganggu
  • Saya bersekolah di sekolah teknik yang berfokus pada ilmu komputer, dan seorang profesor informatika yang menyukai retro serta senang memamerkan mesin arkadenya sendiri memilih berfokus pada 6502 alih-alih assembly 8808 yang ada di rencana pelajaran resmi
    Jujur, itu salah satu pengalaman belajar terbaik dalam hidup saya, dan saya tidak berharap caranya berbeda. Ia bahkan membuat kami merakit komputer breadboard Ben Eater, sehingga nuansa praktik langsungnya sangat kuat dan benar-benar menarik

  • Pertama kali saya bersentuhan dengan bahasa assembly adalah PDP-10, dan yang saya punya hanya manual prosesor DEC-10
    Saya benar-benar bingung. Instruksinya ada ratusan dan penjelasannya tidak jelas. Saya sama sekali tidak tahu apa itu register, akumulator, alamat, atau stack. David Rolfe menuliskan beberapa subrutin yang saya perlukan untuk versi Fortran dari Empire, dan itu sedikit membantu, tetapi saya tetap tersesat
    Suatu hari saya bertanya kepada teman saya Shal Farley apa itu stack, dan ia menjawab, “Bayangkan tumpukan piring. Kamu menaruh satu piring di atasnya (push), lalu mengambil satu piring (pop).” Saat itu juga seperti ada lampu menyala dan saya langsung mengerti
    Setelah itu saya mulai menangani mikroprosesor 6800 di sebuah board kecil. Instruksinya sekitar 40 dan semuanya muat di satu kartu. 40 instruksi itu mudah dipelajari, dan tiba-tiba semuanya menjadi jelas
    Ketika kembali ke manual -10, semua isinya mulai masuk akal