Saya menemukan seorang programmer hebat bernama Steve Wozniak

Sekali waktu, ketika komputer besar dan bisnis membosankan, sesuatu yang tidak terduga terjadi. Peretas muda telah menemukan cara untuk merakit komputer pribadi dengan mikroprosesor murah dari teletype dan lampu lalu lintas. Salah satunya adalah Steve Wozniak. Orang-orang ini mengambil keterbatasan komputer mereka sebagai tantangan, duduk dan membuat chip kecil ini melakukan hal-hal luar biasa. Berikut adalah apa yang diterbitkan oleh Dr Dobb's Journal pada Agustus 1976 :



Ini adalah seperangkat prosedur aritmatika pada bilangan real. Mikroprosesor (6502, sama seperti di Apple I dan II) hanya bisa bekerja dengan byte, yaitu bilangan bulat antara 0 dan 255. Lebih buruk lagi, ia hanya bisa menambah dan mengurangi mereka. Tetapi dengan perpustakaan ini Anda dapat menghitung 1,2627โˆ’1099,56, atau bahkan mengambil akar kuadrat dari pi. Anehnya, seorang penulis program bernama Steve Wozniak menyesuaikan fungsi-fungsi dasar (penambahan, pengurangan, penggandaan, dan pembagian) menjadi 239 byte, menggunakan total 127 instruksi.

Ini adalah bagian pemrograman yang cukup mengesankan. Setelah membacanya beberapa kali, saya dapat mengatakan bahwa dia sangat brilian. Misalnya, siklus prosedur penggandaan dan pembagian dipicu 23 kali, sekali untuk setiap bit dalam hasilnya. Apakah Anda pikir Woz akan menghabiskan dua byte menulis konstanta 23 di kedua tempat? Tentu tidak! Ini memuat konstanta 23 ke dalam rutinitas awal yang digunakan kedua loop:



Sebagai contoh lain, algoritma harus mengambil nilai absolut dari M1 dan M2. Bisakah kamu menulis

  M1 = abs (M1);
 M2 = abs (M2); 

Woz tidak mengulangi seperti itu. Dia menulis satu prosedur yang mengambil nilai absolut M1, dan kemudian mengubah M1 dan M2. Kemudian ia memanggil prosedur ini dua kali , sehingga hasil yang sama dicapai dengan setengah jumlah kode. Selain itu, mengganti M1 dan M2 juga diperlukan di tempat lain, sehingga kode melakukan pekerjaan ganda.

Tentu saja, anjak intensif seperti itu membuat sulit untuk melacak alurnya, tetapi sungguh menakjubkan seberapa jauh kode ini dari waktu ke depan. Membaca artikel lain dalam edisi 1976, Anda dapat menemukan satu ton kode yang tidak terlalu ditulis dengan baik. Ini bisa dimengerti: orang baru tahu cara memanfaatkan mikroprosesor baru. Dan di tengah-tengah semua berlian ini, yang mungkin layak menjadi peretas modern dari demoscene. Sebagai perbandingan, ini adalah tingkat kecerdikan total yang sama dengan kode 6502 yang luar biasa ini 30 tahun kemudian.

Cukup dengan ceritanya. Mengapa saya mempelajari kode kuno ini dengan hati-hati pada tahun 2019? Faktanya adalah bahwa saya sedang mengerjakan pendamping baru untuk IยฒCDriver dan SPIDriver , dan dia harus melakukan operasi floating-point pada prosesor 8-bit Silicon Labs EFM8 (berdasarkan 8.051), yang saya gunakan dalam proyek sebelumnya. Sekarang dengan mudah melakukan perhitungan ini, seperti perpustakaan 6502. Saya tidak membutuhkan kode yang kecil dan dioptimalkan, tetapi sekarang ia bekerja cukup cepat, sedikit lebih cepat daripada perpustakaan Keil yang sama . Kode hebat tidak pernah mati!

Source: https://habr.com/ru/post/id459584/


All Articles