Bahasa Pemrogramman Assembly

“Dunia Hening Tanpa Kehebohan”

Dunia bahasa pemrogramman assembly adalah dunia yang sangat sepi dari hiruk pikuk persaingan ataupun masalah yang sering anda temukan pada bahasa pemrogramman pada umumnya. Bahkan anda tidak memiliki saingan dalam bentuk apapun sehingga nampak sangat tidak bersahabatnya dunia bawah tanah ini. Sebagian orang masih menggunakan bahasa pemrogramman assembly namun juga sebagian lagi meninggalkannya yang disebabkan karena terlalu menguras waktu dan tenaga.

Jika ditinjau dari beragam literatur yang ada dalam pembagian level bahasa pemrogramman maka assembly digolongkan sebagai bahasa pemrogramman level rendah (low level) namun ada juga yang mengklasifikasikannya sebagai bahasa pemrogramman intermediate. Bahasa pemrogramman yang paling rendah tentu saja adalah bahasa mesin itu sendiri yang merupakan instruksi binari secara langsung pada CPU, namun karena assembly melakukan hal yang sama yaitu instruksi langkah per langkah pada cpu walaupun masih perlu untuk dikompilasi oleh assember (sebutan untuk assembly compiler) maka bisa disebut sebagai bahasa pemrogramman paling rendah atau low level tadi dimana bahasa mesin sudah tidak flexible dan tidak bisa lagi disebut sebagai bahasa pemrogramman melainkan instruksi mesin secara langsung. Klasifikasi ini yang saya ambil yaitu assembly merupakan bahasa pemrogramman low level yang dapat digunakan oleh programmer untuk membuat program.

Saat ini yang masih digunakan oleh para programmer hanya ada 4 yaitu

  1. Netwide Assembler (NASM)
  2. Flat Assembler (FASM)
  3. Microsoft Assembler (MASM)
  4. GNU Assembler (GAS)
  5. Clang Assembler (LLVM)

Keempat bahasa pemrogramman assembly tersebut diatas adalah bahasa pemrogramman umum yang digunakan untuk arsitektur processor yang sering digunakan seperti keluarga besar x86 dan dan ARM. Sementara itu untuk jenis processor sekelas microcontroller menggunakan instruksi tersendiri yang seringkali menggunakan custom assembler yang dipaket menjadi satu kesatuan program guna mengatur atau memprogram chip microcontroller tersebut diantaranya adalah Arduino, PIC dan ESP.

Untuk NASM dan FASM adalah assembly compiler yang masih berdiri sendiri walaupun yang terakhir yaitu MASM dibundle dalam Visual Studio bersama saudara high level nya yaitu C/C++. Sementara itu GAS adalah bagian dari GCC atau GNU Compiler Collection yang mirip dengan Visual Studio namun diperuntukan bagi sistem operassi Linux. Sedangkan Clang Assembler adalah bagian dari Project LLVM yang juga merupakan toolchain seperti GCC dan Visual Studio namun banyak digunakan untuk custom assembler.

Yang banyak digunakan pada sistem operasi Windows adalah MASM karena bundle dengan visual studio, sementara itu di Linux tentu saja GAS yang paling banyak digunakan. Selanjutnya pada MacOS menggunakan Clang Assembler dari LLVM, dan pada embedded system seperti Microkontroler dan Arduino menggunakan Toolchain yang dikeluarkan oleh masing-masing pembuat chip tersebut seperti AVR atau menggunakan GCC sebagai toolchain nya. Dulu pernah ada juga Turbo Assembler (TASM) yang cukup terkenal dan dibundle dengan bahasa pemrogramman PASCAL (sekarang namanya Delphi) buatan dari Borland namun kini sudah tidak digunakan lagi dan reinkarnasi bahasa pemrogrammannya yaitu Delphi tidak lagi menjadikan TASM sebagai bagian mandatory.

Tinggal ada NASM dan FASM sebagai penjaga netralitas terakhir bagi bahasa pemrogramman assembly tanpa harus tergantung bundle toolchain bahasa pemrogramman tingkat tinggi lainnya. Sebagian besar bahasa pemrogramman tingkat tinggi menjadikan Assembly sebagai perantara dimana program yang ditulis dengan bahasa pemrogramman tertentu dikompilasi menjadi bahasa pemrogramman assembly sesuai dengan arsitektur tujuan dimana program tersebut akan dibuat dan terakhir dikompilasi dengan assembler menjadi program yang siap digunakan.

Metode ini digunakan oleh para pembuat compiler agar bahasa pemrogrammannya bisa portable alias bisa dikompilasi untuk komputer yang memiliki arsitektur cpu atau sistem operasi yang berbeda. Tidak perlu terkejut karena sebenarnya di bahasa tingkat tinggi sekalipun hal ini terjadi dimana anda tidak bisa membuat program untuk sistem operasi Windows dari compiler toolchain Linux demikian pula sebaliknya. Padahal mereka menggunakan arsitektur CPU yang sama, apalagi jika menggunakan arsitektur yang berbeda dimana perlu dilakukan porting ataupun menggunakan virtual device (seperti pada Android Studio) jika hendak membuat dan menjalankan suatu program yang dibuat pada arsitektur yang berbeda. Padahal itu adalah bahasa pemrogramman tingkat tinggi yang katanya paling ketat bersaing bahkan sudah seperti persaingan keyakinan.

Lantas kenapa bahasa pemrogramman Assembly menjadi dunia yang hening, tak lebih karena instruksi yang kita lakukan pada CPU dilakukan secara langkah per langkah sehingga untuk melakukan sesuatu bahkan kita harus mengetik puluhan baris untuk mendapatkan hasil yang sama dari sebaris instruksi pada bahasa pemrogramman tingkat tinggi. Lantas tentu saja muncul pertanyaan berikutnya, kenapa bahasa assembly tidak punah? Tidak lain karena kecepatan dan efisiensi yang didapat jika kita melakukan proses langkah per langkah secara efisien. Apa yang membedakan keduanya? Pada bahasa tingkat tinggi, proses penterjemahan menjadi instruksi spesifik CPU (bahasa mesin) atau menjadi bahasa assembly dilakukan oleh compiler atau dengan kata lain diserahkan secara penuh pada compiler untuk menterjemahkan dan melakukan optimisasi jalur atau instruksi apa yang akan dilakukan oleh CPU secara langsung. Sementara itu jika kita menggunakan bahasa pemrogramman assembly maka kita melakukan segala halnya secara sendiri.

Salah satu kelemahan dari bahasa pemrogramman tingkat tinggi adalah penyerahan secara penuh pada compiler yang menyebabkan para pembuat compiler akan menggunakan cara yang paling umum berbanding dengan cara yang lebih cepat atau menggunakan fasilitas atau fitur baru yang sebenarnya sudah tersedia pada CPU dengan pertimbangan bahwa user yang menggunakan program hasil kompilasi tersebut belum tentu memiliki atau menggunakan CPU yang mendukung fitur dimaksud.

Contoh yang paling sering adalah fitur SIMD (Single Instruction Multiple Data) seperti fitur SSE (Streaming SIMD Extension) atau yang lebih baru seperti AVX, AVX2 dan AVX512 pada processor x86. SIMD adalah suatu bagian dari CPU yang khusus menangani proses kalkulasi matematis dengan beragam fitur yang diberikan untuk mempercepat proses kalkulasi selain dari menggunakan register yang biasa. Jika kembali ke sejarah era 90-an, dimana pada awal era tersebut gebrakan yang cukup besar dari Intel sebagai pemimpin pasar chip komputer adalah dengan arsitektur Pentium yaitu menggunakan metode super scalar setelah sebelumnya pada versi 486 mengintegrasikan co-processor matematik (80387) yang terpisah dari 80386 menjadi satu chip tunggal. Akibatnya terjadi peningkatan signifikan kemampuan pemrosesan CPU pada saat itu dari pendahulunya. Namun komputer pada zaman itu belum mampu untuk melakukan pemrosesan video terkompresi kecuali menggunakan chip tambahan yang sering disebut multimedia card agar para pemilik komputer zaman jadul dapat memutar fim atau video dari CD. Sesuai dengan namanya yaitu MMX yang berarti Multi Media eXtension adalah penambahan kemampuan pemrosesan integer (bilangan bulat) secara berantai yang sangat dibutuhkan untuk memproses data gambar dari format mpeg yang menjadi standar dari video zaman itu (format yang lebih baru sudah lebih rumit lagi). Jadi jangan harap komputer saat itu bisa digunakan untuk proses editing video, untuk menampilkannya pun masih tersengal-sengal.

Walaupun kemudian pemrosesan pixel dan video diambil alih oleh GPU namun kemampuan dari pemrosesan dengan metode berantai SIMD tetap menjadi kebutuhan yang disebabkan pemrogramman langsung pada chip GPU yang memang memiliki kemampuan pemrosesan berantai masih terlalu sulit dan memusingkan bahkan hingga saat ini (dibahas pada CUDA Programming dan OpenCL programming). Secara bertahap, Intel menambahkan SSE (untuk floating point atau bilangan pecahan berbanding dengan MMX yang khusus untuk bilangan bulat) sejak Pentium III pada tahun 1999, sebagai jawaban terhadap fitur 3DNow yang diperkenalkan oleh pesaingnya AMD sebagai vector processing pada chipnya. Kemampuan ini untuk membantu pemrosesan vector yang sering dilakukan oleh game 3D yang sedang marak pada saat itu. Tidak cukup sampai disitu, Intel pada tahun berikut nya meluncurkan SSE2 pada Pentium4 dan dengan tegar mengambil alih kembali tampuk pimpinan inovasi dibidang chip computer. dan seperti yang kita tahu sekarang ini bahwa ada SSE3 yang diluncurkan pertama tahun 2003 dan terakhir SSE 4 pada tahun 2006. Untuk diketahui, SSE menggunakan 8 register 128 bit tambahan yang saat itu hanya bisa diakses jika menggunakan bahasa assembly dengan pertimbangan bahwa tidak semua user memiliki CPU Pentium yang mendukung fitur tersebut. Belum lagi kemudian pengembangan lebih lanjut dari SSE yaitu dengan diperkenalkannya AVX yang menjadikan rentang lebar register menjadi 256 bit dan menambahkan lagi 8 register hingga total menjadi 16 register yang dapat digunakan oleh program.

Nah ini bagian serunya, AVX dengan 16 register tambahan tersebut diperkenalkan sejak CPU seri SandyBridge yang diluncurkan awal 2011 dan AMD Buldozer (akhir 2011), akibatnya Visual Studio 2011 belum menggunakan fitur tersebut untuk proses optimasi dalam kompilasinya dan update dari Visual Studio 2011 didukung hanya lewat assembly, baru pada Visual Studio 2013 didukung penuh untuk instruksi AVX walaupun dengan pemakaian terbatas (butuh flag khusus) sedangkan optimasi hanya dilakukan pada fitur SSE saja. Hingga peluncuran Visual Studio 2015 dan 2017 pun optimasi masih menggunakan SSE sementara jika kita hendak mendapatkan fitur AVX terpaksa menggunakan instruksi dalam bahasa assembler. Karena faktor perbedaan adopsi dari fitur yang sering terlambat terutama pada AVX-512 dimana AMD baru mengadopsinya pada microarchitecture Zen4 (tahun 2022) maka sebagian besar compiler tidak mendukung AVX-512 secara langsung kecuali dipersyarat khusus oleh kita lewat flag atau tab optimasi. Hal ini menyebabkan ketimpangan yang sangat besar antara optimasi manual kita lewat bahasa pemrogramman assembly memanfaatkan fitur SIMD untuk melakukan kalkulasi berbanding dengan bahasa pemrogramman tingkat tinggi yang dikompilasi secara standar.

Dengan ilustrasi diatas, tentu kita faham kenapa pada pembahasan tentang bahasa assembly seringkali kita menemukan bahwa bahasa pemrogramman assembly lebih ditujukan pada aplikasi yang membutuhkan kemampuan tinggi (High Performance Computing) ketimbang aplikasi kebanyakan. Bahkan bahasa pemrogramman Python yang menjadi anak emas para perancang AI, scientist dan deep learning melirik assembly dan membuat fork (antarmuka) antara python dengan Assembler karena dapat memangkas proses training AI menjadi jauh lebih singkat dengan memanfaatkan fitur seperti AVX dan AVX-512.

Beberapa program video editing atau converting seperti handbrake memberikan hasil pengukuran kecepatan rendering yang berbeda antara chip Intel dan AMD yang disebabkan oleh perbedaan dukungan terhadap fitur AVX-512 yang sudah ditanamkan pada processor Intel seri Skylake tahun 2015 sementara itu baru didukung oleh AMD seri 7000 (Zen4) pada tahun 2022. Sebagian besar programmer game baik yang menggunakan game engine seperti Unreal Engine dan lain sebagainya secara benchmark AMD dan Intel dapat bersaing bahkan beberapa kali AMD mempecundangi Intel, hal ini karena game engine tersebut tidak menggunakan fitur AVX-512 dengan pertimbangan bahwa hanya processor intel yang memilikinya sementara game engine akan crash jika dijalankan pada komputer intel dengan chip sebelum 2015 atau pada processor AMD.

Dunia yang hening dan senyap tanpa persaingan ini terlalu cepat 10 tahun dari dunia hiruk pikuk dunia bahasa pemrogramman level atas. Terlalu canggih dengan pemanfaatan fitur terbaru yang justru tidak dilakukan oleh sebagian besar bahasa pemrogramman tingkat atas.

Selamat Datang di Situs Literatur Ilmu

Untuk langkah awal dan merupakan tujuan utama dari kami yaitu memberikan literatur ilmu dalam Bahasa Indonesia maka situs ini akan menggunakan Bahasa Indonesia sebagai sistem utamanya. Namun jika memungkinkan dikemudian hari akan ditambahkan terjemahan ke bahasa Inggris atau bahasa lainnya.

Tujuan
Adalah memberikan literatur terkini, mendetail dan berfokus pada konsep dasar ilmu sains dari segala sumber yang bisa kami dapatkan, dari segala bahasa yang bisa kami mengerti dan dari segala aspek yang bisa kami sampaikan sebagai bahan dan koleksi arsip keilmuan bagi seluruh masyarakat Indonesia dan mungkin juga nanti untuk seluruh umat manusia.

Terinspirasi dari “Cosmos” tulisan Carl Sagan, jurang pemisah antara ilmu pengetahuan yang rumit dengan pemahaman masyarakat umum sangat lebar sehingga perlu ada jembatan yaitu memberikan penjelasan dan pemahaman terhadap beragam cabang sains dalam bahasa yang mudah dimengerti. Dasar pemikiran cukup sederhana, dengan melibatkan beberapa juta orang yang tersebar dari ribuan generasi dengan segala ekslusivitas yang terjadi telah menghasilkan teknologi yang kita miliki saat ini, bayangkan jika kontribusi tersebut dijalankan oleh milyaran orang dimasa yang akan datang, tentu teknologi kita akan sangat berkembang jauh dari yang pernah kita bayangkan.
Terinspirasi dari www.archive.org dan www.gutenberg.org bahwa perpustakaan digital sangat diperlukan agar ilmu pengetahuan terlestarikan dan tidak terjadi re-invented (penemuan kembali) yang justru menghabiskan tenaga dan biaya padahal dapat dicurahkan untuk pengembangan lebih lanjut.

Terpicu oleh Demografi, dalam 5 tahun mendatang, Indonesia mendapatkan satu keuntungan besar berdasarkan demografi penduduknya yaitu jumlah usia produktif akan menguasai lebih dari separuh jumlah penduduk, namun beberapa waktu yang lalu kita mendapatkan suatu hal yang cukup membuat prihatin yaitu menurut survey yang dilakukan oleh Richard Lynn dan David Becker pada tahun 2019 bahwa IQ rata-rata dari orang Indonesia hanya 78,49 atau berada diambang batas terbawah fungsi intelektual kategori “Rendah”. Walaupun mendapat banyak kontroversial terhadap survei tersebut dimana IQ rerata dunia adalah 82 alias dalam kategori rendah juga, tentu saja hal tersebut menjadi pertanyaan penting terhadap proses survey yang dilakukan. Anggaplah bahwa itu benar, terlepas dari sebagian kecil orang Indonesia memiliki otak genius, namun tidak dapat menutupi kurangnya literasi, kemauan dan aspek malas yang dimiliki oleh sebagian besar rakyat kita. Belum lagi jika kita fahami secara utuh saat kita terjun ke masyarakat atau kita melihat orang-orang disekitar kita, jelas terlihat bahwa tingkat antusias, minat ataupun pengasahan bakat sangat rendah sekali. Faktor yang paling jelas terlihat pada masyarakat kita adalah kurangnya pengetahuan terhadap teknologi terapan yang dimiliki yang menyebabkan dari 270 juta penduduk Indonesia sangat sedikit enterpreneur, pengembangan teknologi atau yang sejenis jika dihitung dalam ukuran persentase.

Berdasarkan 3 faktor tersebut, maka kami membuat situs tentang ilmu pengetahuan yang dapat difahami oleh masyarakat awam sekalipun, namun juga menyediakan pembahasan teknis sesungguhnya untuk para praktisi sains dan orang awam demi agar dapat menjadi acuan literasi bagi kemajuan umat manusia. Singkatnya, Situs ini kami buat untuk seluruh kalangan dan seluruh umat manusia terlepas seberapa tinggi tingkat pemahaman dan penguasaan dari sains yang dimiliki.
Kami akui bahwa memang benar kami mengikuti jejak dari mereka namun dengan sedikit pengembangan dan pembatasan yaitu:

  1. Fokus Pada Sains
    Kami sangat fokus dan intens untuk memberikan informasi, pengetahuan, kemampuan dan keahlian penguasaan bidang ilmu sains yang sebenarnya hampir seluruh bidang ilmu yang diajarkan pada bangku kuliah, kursus ataupun tips-trik yang menarik dan berguna. Sesuai dengan tujuan kami untuk saling berbagi ilmu dan keahlian bagi seluruh rakyat Indonesia serta seluruh umat manusia.
  2. Tidak Mengikuti Trend Sosial
    Disini kami tidak akan mengikutkan trend sosial yang juga terdapat pada situs library besar yang mungkin sudah anda kenal jika trend tersebut tidak mengandung pengetahuan atau ilmu yang perlu untuk diabadikan dan mungkin dikembangkan lebih lanjut. Contohnya kami tidak akan memasukkan pembahasan tentang individu ataupun informasi di bidang hiburan, gosip, film, politik, demografi, negara, kultur, sejarah, ataupun hal lainnya jika menurut kami tidak memiliki aspek keilmuwan ataupun hal yang dapat menjadi keahlian seseorang. Misalkan tentang suatu lagu atau seorang bintang sinetron, kami tetap membahas tentang dasar dan konsep dari music dan instrumen, sinematografi, trik pembuatan sinetron dan film, metode penyusunan naskah, skenario, mixing, finalizing, metode produksi, distribusi, sudut pandang ekonomi dan lain sebagainya bahkan sampai penguasaannya karena faktor pengetahuan, namun kami tidak akan membahas tentang gosip ataupun trend yang ada terhadap lagu atau bintang sinetron dimaksud
  3. Lebih ke arah How To
    Yap benar sekali, bahwa kami lebih fokus untuk mengarsipkan dan menyediakan informasi tentang konsep dasar ilmu sampai dengan tahap bagaimana melakukan, membuat dan mengembangkan dari konsep dimaksud serta menerapkannya di kehidupan sehari-hari.

Walaupun dunia digital sudah sangat maju dan hampir seluruh lapisan masyarakat sudah mengenal internet, namun kadang apa yang kita cari tidak sesuai dengan yang diharapkan baik dari segi bahasa ataupun literatur yang diinginkan. Sementara itu untuk penguasaannya membutuhkan bangku sekolah atau kursus yang memiliki aturan tertentu terutama pada syarat untuk mendapatkan ilmu tersebut. Kuota kursi untuk sekolah sangat terbatas baik dari segi kemampuan minimal individu, biaya yang tidak sedikit serta waktu yang harus terbuang jika anda ingin memiliki pengetahuan tersebut.
Banyak masyarakat Indonesia terhalang oleh hal-hal tersebut yang disebabkan oleh banyak faktor diri sendiri ataupun lingkungan dan tentu saja biaya.

Site Map

Untuk Faktor Hak Cipta dan Kekayaan Intelektual dan atau copyright dari sebagian besar literatur yang ada, maka kami membuat situs ini dalam bentuk post topik buatan sendiri sehingga tidak ada benturan dengan copyright dengan mencantumkan beragam sumber dari tulisan dimaksud agar dapat dikoreksi atau disempurnakan. Dan untuk menjaga validitas dari materi, kami dengan senang hati menerima kritik, saran dan ataupun diskusi demi perbaikan dan kemajuan dari situs ini. Diskusi dan kritik serta saran bisa dilakukan pada forum yang telah kami sediakan dan dikelola oleh orang – orang yang sama dengan situs ini. Kami juga menerima sumbangsih artikel dari anda yang dapat dikirimkan lewat email.

Konten dari situs sangat banyak sehingga sebagian besar dari post akan tenggelam dengan sendirinya dengan bertambahnya post yang diterbitkan kemudian. Gunakan Kategori, tag atau search agar anda dapat mencari topik yang menarik bagi anda dan sesuai dengan keinginan anda. Level topik yang tersedia ditandai dengan 3 tag sesuai level pembahasan yaitu Starter untuk topik umum, Intermediate untuk topik yang disertai penjelasan teknis dan kalkulasi rumit serta topik advance untuk topik yang sangat detail dan membutuhkan pemahaman lebih dalam untuk mengikutinya.
Pembahasan akan diberikan dalam bentuk per-artikel dengan satuan pembahasan yang diusahakan terkecil agar semua yang membacanya tidak trauma dengan panjangnya tulisan yang kami berikan dalam setiap artikel. Pertimbangan kami adalah proses anda menyerap atau membaca artikel kami tidak lebih dari 15 menit bahkan kalau bisa cukup 5-10 menit saja. Jika pembahasan cukup panjang maka akan disediakan link untuk kelanjutan dari artikel dimaksud atau dengan metode berseri. Karena tersaji pada situs yang sama, maka tampilan awal dari situs adalah artikel terbaru yang terbit yang disusun dalam bentuk list content yang diurutkan dari yang terbaru dan seterusnya, jika diklik maka akan ditampilkan content yang sebenarnya sebagai bahan bacaan yang anda pilih, namun disediakan metode kategori dan tag agar anda dapat mudah dalam mencari artikel yang sesuai dengan kebutuhan anda.

Situs memberikan kategori dengan tingkat kedalaman pembahasan berdasarkan pengelompokan yang sudah kami tetapkan. Saat ini tingkat kedalaman dari kategori adalah 5 level sebagai contoh Computer->Computer Hardware-> Microprocessor -> Microarchitecture->Branch Prediction -> “Intel Core i5 Gen 12 Branch Prediction Table”. Anda dapat memilih setiap kategori dan sub kategori untuk mendapatkan artikel-artikel yang berhubungan.

Topik akan merentang luas dari level seperti pelajaran anak sekolah menengah agar mudah difahami sampai dengan topik tekhnis khusus yang mungkin hanya dipelajari atau didapat dari jurnal dan thesis atau disertasi yang tidak tersedia di Internet sekalipun bahkan ada sebagian merupakan hasil reverse engineering dari perangkat proprietary agar kita semua mengetahui apa yang ada dibalik layar tentang teknologi yang digunakan.

Selamat menimba ilmu dan menjadi manusia yang lebih maju. LINK START

Trims – Website Administrator ZORAGIN