Halaman

Minggu, 20 September 2020

TUTORIAL 1 : BELAJAR ASSEMBLY UNTUK ANDROID ARM

Ass. Wr. Wb.

Pada kesempatan ini kita akan belajar membuat code assembly untuk android ARM. Disini akan dipraktekkan bagaimana cara membuat aplikasi android tanpa gradle atau tanpa build system. Jadi kita akan membuat aplikasi android tanpa Android Studio. Mengapa kita perlu untuk belajar membuat aplikasi android tanpa Android studio dan gradle, ya karena koneksi internet di indonesia belum merata dan masih mahal. Jadi kita perlu cara untuk mendevelop aplikasi android secara offline. Peralatan yang diperlukan adalah  Android NDK r21 dari situs https://android-developers.googleblog.com cukup download sekali, sudah bisa dipakai di banyak komputer secara offline. System yang saya pakai adalah windows 64bit, jadi download NDKnya ya untuk windows64bit juga. 




Untuk teman-teman bisa sesuaikan dengan system yang dipakai, apakah linux atau mac. Adapun device yang digunakan untuk demo programnya adalah android ice cream sandwich atau ICS, bukan emulator. Alasannya adalah untuk memastikan apakah aplikasi benar-benar akan berjalan di android device smartphone. Perlu diperhatikan bahwa bahasa assembly ini harus dijalankan pada emulator yang bisa mengemulasi processor ARM. Bluestack, NOX, PrimeOS, PhoenixOS semuanya x86_64 tidak bisa ARM. Pada kesempatan lain kita akan menggunakan QEMU, karena qemu ini bisa mengemulasi perangkat keras seperti processor arm 32bit, arm 64bit, x86_64 dan lain-lain. Untuk mengetahui lebih dalam silahkan merujuk ke www.qemu.org.


; Code program sebaiknya diberi keterangan lengkap agar mudah di fahami

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Nama Program : Halo Dunia Robot
; Nama file : halo.s
; Dibuat oleh : Gunawan Jinnu
; Tanggal pembuatan : 20 September 2020
; Tanggal update : 20 September 2020
; Deskripsi
- Menampilkan pesan Halo Dunia Robot

; Compiler : NDK r21 x86_64 https://android-developers.googleblog.com
; Compile dengan cara :
; arm-linux-androideabi/bin/as -o halo.o halo.s
; Link dengan cara :
;
arm-linux-androideabi/bin/ld -o halo halo.o
;Link source code : https://re-pinrang.blogspot.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

.data
    pesan: .ascii "Halo Dunia Robot.\n"
    len_pesan = . - pesan

.bss

.text
.globl _start
_start:
mov %r0, $1 // file descriptor 1 (stdout)
ldr %r1, =pesan
mov %r2, $len_pesan
mov %r7, $4 // syscall 4 (syswrite)
swi $0                  //linux kernel syscall
mov %r0, $0         // exit status return 0
mov %r7, $1 // syscall 1 (exit)
swi $0                  //linux kernel syscall


Kalau kita perhatikan, kode assembly ini sama saja dengan assembly di linux. Mulai dari file descriptor yang digunakan 1 sebagai standard output di linux. Kemudian syscall 4 syswrite linux. Syscall 1 untuk exit. Yang agak beda adalah swi $0, kalau di linux itu intrupsi 0x80h, tapi artinya sama saja linux kernel syscall.

Cara compile :
Extrack NDK r21 yang sudah di download, cari lokasi folder android-ndk-r21b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\arm-linux-androideabi\bin

as -o halo.o halo.s

menghasilkan file objek halo.o

link dengan cara:

ld -o halo halo.o

Cara running di android :
1. Hubungkan dengan kabel usb, buka cmd, ketik : adb push halo /sdcard/
2. Ketik : adb shell
3. mkdir /data/user/temp
4. mv /sdcard/halo /data/user/temp/
5. cd /data/user/temp
6. ./halo

Setelah itu harusnya muncul pesan Halo Dunia Robot.

Ok. Semoga bermanfaat. Terimakasih.

Tidak ada komentar:

Dasar

TUTORIAL 1 : DASAR BAHASA ASSEMBLY WINDOWS 32bit MASM32 CONSOLE UNTUK PEMULA

Alhamdulillahirabbilalamin, pada saat ini kita semua masih diberi kesempatan untuk terus belajar, kita niatkan mudah-mudahan apa yang kita l...

Postingan Populer