ARM Registers pada Bahasa Pemrograman Assembly

Dalam bahasa pemrograman assembly kita langsung mengakses processor register nah ARM processor menyediakan general-purpose dan special-purpose register, beberapa additional register tersedia dalam mode privileged execution.

Pada semua processor yang berdasarkan ARM , register-register berikut ini tersedia dan dapat digunakan untuk semua processor ARM:

  • 13 general-purpose register (R0-R12)
  • 1 stack pointer (SP)
  • 1 link register (LR)
  • 1 program counter (PC)
  • 1 application program status register (APSR) kadang juga dikenal sebagai CPSR

register tambahan tersedia dalam privileged software execution. ARM processor, dengan pengecualian processor berdasarkan ARMv6-M dan ARMv7-M , memiliki total 37 register, dengan 3 register tambahan jika Security Extensions telah diimplementasikan, dan pada ARMv7-A , 3 lebih jika Virtualization Extensions telah diimplementasikan.register dibuat dalam sebagian bagian yang tumpang tindih pada bank. Disinilah letak perbedaan register bank pada tiap processor.

Berikut ini contohnya dalam hal ini saya menggunakan orange pi zero dengan processor allwiner h2+ yang mana mdenggunakan arm versi 4 x Cortex-A7 CPU-core

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 .global _start

 _start:
       mov r7, #3 @ memanggil keyboard dan supaya supaya menungu sampai ditekan enter
       mov r0, #0 @ stream tombol apa saja yang ditekan
       mov r2, #2 @ membaca 2 karakter yang ditekan
       ldr r1, =character @ load variabel character sebagai register r1
       swi 0
 _write:
       mov r7, #4 @ syscall untuk memanggil fungsi print ke layar
       mov r0, #1 @ print ke layar
       mov r2, #2 @ jumlah karakter yang akan diprint ke layar
       ldr r1, =character
       swi 0
 end:
       mov r7, #1 @ sysExit digunakan ketika akan meninggalkan program atau mengakhiri program
       swi 0

 .data
 character:
       .ascii " "

selanjutnya

code:as -g -o io.o io.s
code:ld -o io io.o

sumber: