Teringat dulu pas kuliah Arsitektur dan Organisasi Komputer (Orkom), ada tugas ngeSPIM. Apa tuh?
NgeSPIM berarti ngoding dalam bahasa assembly MIPS. Kenapa namanya ngeSPIM? Karena software yang digunakan itu adalah emulator MIPS, SPIM. Enaknya assembly MIPS itu, instruction setnya gak terlalu banyak, jadi gak terlalu susah untuk dihafal seperti assemblynya IA-32. Sejak tahun 2002 kalo gak salah, tugas Orkom pasti ada tugas ngeSPIM.
Dan kuliah S2 ini ternyata ada mata kuliah lanjutannya, Arsitektur Komputer Lanjut (Arslan). Kuliah pembantaian. Gila, bukunya itu tebelnya bukan main. Buat anak2006 yang ngerasa buku mata kuliah Sistem Operasi tebel banget, ada lagi loh yang bener-bener tebel. Dan konsepnya jauh lebih mendalam daripada kuliah Orkom yang dulu. Tentang optimasi compiler , Bus, I/O, dll
Tugasnya pun ternyata sama, suruh ngeSPIM lagi. Gila, udah berapa tahun gak pernah ngoding MIPS. Untungnya, tugasnya rada GJ gitu deeh…. Suruh bikin program dengan fungsi aritmatika… Satu kelas, gak boleh ada yang sama programnya antar kelompok.
Akhirnya gw ngetag program ngitung GCD dengan algoritma Euclidean.
# Greatest Common Divisor # Mencari Faktor Persekutuan Terbesar dengan menggunakan # algoritma Euclidean # Kode program .text main: # Menampilkan string ke layar la $a0, str1 li $v0, 4 syscall # Mengambil input bilangan pertama dari keyboard li $v0, 5 syscall move $t0, $v0 # Menampilkan string ke layar la $a0, str2 li $v0, 4 syscall # Mengambil input bilangan kedua dari keyboard li $v0, 5 syscall move $t1, $v0 # Menampilkan string ke layar la $a0, str3 li $v0, 4 syscall # Menghitung GCD beqz $t0, exit1 loop : beqz $t1, endloop bgt $t0, $t1, branch1 sub $t1, $t1, $t0 b loop branch1 : sub $t0, $t0, $t1 b loop endloop : move $a0, $t0 li $v0, 1 syscall b exit exit1 : move $a0, $t1 li $v0, 1 syscall b exit exit : # Keluar dari program li $v0, 10 syscall # Data .data str1: .asciiz "Masukkan bilangan pertama\n" str2: .asciiz "Masukkan bilangan kedua\n" str3: .asciiz "FPB dari keduanya adalah\n" # gcd.asm
Ternyata masih bisa, hehehe.
ada yg lebih tebel dari FreeBSD Handbook? (woot)