Jump to content

Introduction to Assembly: Difference between revisions

From Haidhi Wiki
Created page with "Assembly language adalah bahasa pemrograman tingkat rendah yang langsung berinteraksi dengan processor. Bahasa ini bersifat processor-dependent yang artinya setiap arsitektur prosesor memiliki instruksinya masing-masing, tapi secara konsep logika pemrogramannya SAMA SEMUA. Ibarat python dan javascript adalah dua bahasa yang berbeda, tapi memiliki konsep yang sama seperti variabel, loop, branching, dll. Processor dapat mengakses memori dengan kapasitas yang besar (RAM),..."
 
No edit summary
Line 3: Line 3:
Processor dapat mengakses memori dengan kapasitas yang besar (RAM), tetapi untuk mengakses RAM prosesor membutuhkan waktu yang lama. Oleh karena itu processor memiliki memori tersendiri yang kecil namun sangat cepat yang disebut sebagai register
Processor dapat mengakses memori dengan kapasitas yang besar (RAM), tetapi untuk mengakses RAM prosesor membutuhkan waktu yang lama. Oleh karena itu processor memiliki memori tersendiri yang kecil namun sangat cepat yang disebut sebagai register


Register adalah memori yang langsung ketanem di processor yang digunakan untuk menyimpan nilai-nilai langsung yang diperlukan saat melakukan perhitungan dan transfer data. Registers memiliki nama, ukuran, dan fungsi yang berbeda tergantung pada arsitektur prosesor. Tapi secara garis besar ada tiga jenis register: - '''General data registers:''' Digunakan untuk menyimpan nilai atau hasil dari berbagai operasi aritmatika dan logika. (RAX, RBX, RCX, RDX) - '''Stack and frame pointers:''' Digunakan untuk menunjuk awal dan akhir dari stack (RSP, RBP). - '''Instruction pointer/program counter:''' Digunakan untuk menunjuk ke awal instruksi berikutnya yang akan dieksekusi oleh prosesor (RIP).
Register adalah memori yang langsung ketanem di processor yang digunakan untuk menyimpan nilai-nilai langsung yang diperlukan saat melakukan perhitungan dan transfer data. Registers memiliki nama, ukuran, dan fungsi yang berbeda tergantung pada arsitektur prosesor. Tapi secara garis besar ada tiga jenis register:  
* '''General data registers:''' Digunakan untuk menyimpan nilai atau hasil dari berbagai operasi aritmatika dan logika. (RAX, RBX, RCX, RDX)  
* '''Stack and frame pointers:''' Digunakan untuk menunjuk awal dan akhir dari stack (RSP, RBP).  
* '''Instruction pointer/program counter:''' Digunakan untuk menunjuk ke awal instruksi berikutnya yang akan dieksekusi oleh prosesor (RIP).


<span id="cisc-vs-risc"></span>
<span id="cisc-vs-risc"></span>

Revision as of 03:58, 11 March 2025

Assembly language adalah bahasa pemrograman tingkat rendah yang langsung berinteraksi dengan processor. Bahasa ini bersifat processor-dependent yang artinya setiap arsitektur prosesor memiliki instruksinya masing-masing, tapi secara konsep logika pemrogramannya SAMA SEMUA. Ibarat python dan javascript adalah dua bahasa yang berbeda, tapi memiliki konsep yang sama seperti variabel, loop, branching, dll.

Processor dapat mengakses memori dengan kapasitas yang besar (RAM), tetapi untuk mengakses RAM prosesor membutuhkan waktu yang lama. Oleh karena itu processor memiliki memori tersendiri yang kecil namun sangat cepat yang disebut sebagai register

Register adalah memori yang langsung ketanem di processor yang digunakan untuk menyimpan nilai-nilai langsung yang diperlukan saat melakukan perhitungan dan transfer data. Registers memiliki nama, ukuran, dan fungsi yang berbeda tergantung pada arsitektur prosesor. Tapi secara garis besar ada tiga jenis register:

  • General data registers: Digunakan untuk menyimpan nilai atau hasil dari berbagai operasi aritmatika dan logika. (RAX, RBX, RCX, RDX)
  • Stack and frame pointers: Digunakan untuk menunjuk awal dan akhir dari stack (RSP, RBP).
  • Instruction pointer/program counter: Digunakan untuk menunjuk ke awal instruksi berikutnya yang akan dieksekusi oleh prosesor (RIP).

CISC vs RISC

CISC dan RISC merupakan dua jenis assembly yang dibedakan berdasarkan kompleksitas instruksinya.

  • CISC (Complex Instruction Set Computing): memiliki instruksi yang lebih kompleks dan dirancang untuk menyelesaikan tugas dengan lebih sedikit baris kode. Instruksi dalam CISC sering kali mencakup beberapa operasi dalam satu perintah, seperti MUL dalam Intel Assembly yang dapat melakukan akses data, perkalian, dan penyimpanan hasil sekaligus. Contoh yang menggunakan jenis ini: IA-32 dan x64
  • RISC ( Reduced Instruction Set Computer): menggunakan instruksi yang lebih sederhana, di mana setiap instruksi umumnya hanya melakukan satu operasi. Hal ini dapat menghasilkan lebih banyak baris kode untuk menyelesaikan suatu tugas, tetapi juga bisa lebih efisien karena menghindari eksekusi operasi yang tidak diperlukan. Contoh yang menggunakan jenis ini: ARM

Note: IA-32 (32-bit) dan x64 (64-bit) adalah arsikektur processor dari Intel dan AMD yang digunakan untuk desktop. Sedangkan ARM digunakan untuk smartphone, embedded device, etc.