Published: Kam 06 April 2017
By arba
In Programming .
tags: arm assembly registers opi zero
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:
Proudly powered by Pelican , which takes great advantage of Python .
The theme is by Smashing Magazine , thanks!