April 27, 2017

Orange pipc2 ane hidup lebih dari sehari

berawal dari penasaran dan iseng saya mencoba orange pipc2 ane agar tetep nyala selama berhari-hari apakah akan mengurangi performanya ternyata tidak sama sekali masih asyik dipake ngoding lua dan golang jadi kepikiran mau pake ngrock agar dapat diremote dari jauh hehe tapi sepertinya niat ini ditunda dulu karena ada banyak hal yang perlu saya pertimbangkan yaitu saya jarang keluar dari kantor so jadi buat apa diremote dari jauh sbc saya ini

arba@orangepipc2:~$ uptime
 19:41:55 up 1 day, 19:03,  1 user,  load average: 0.03, 0.01, 0.00

April 23, 2017

Free Software

Free Software adalah gerakan memastikan masyarakat mendapatkan empat kebebasan berikut ini:
  • bebas meilihat atau pun mendapatkan source code 
  • bebas memodifikasi source code supaya bekerja sesuai dengan kehendak kita
  • bebas menyebarkan software dengan modifikasi atau tanpa modifikasi
  • bebas menggunakan software tersebut tanpa membayar lisensi
kebebasan untuk melihat/mendapatkan source code kemudian diijinkan memodifikasi source code tersebut sangat penting agi mereka yang belajar pemrograman karena mereka bisa belajar dari siitu.

April 22, 2017

multiple asynctask

 applikasi android yang saya buat menggunakan banyak sekali asynctask dan ada satu proses yang harus selalu dieksekusi dengan cepat kalo ngga akan berbahaya banget hehehe dan yang menyakitkan sejak honeycomb asynctask secara default asynctask tidak mengerjakan task secara paralel lagi jadi akan melakukan antrian.

kita bisa membuat asynctask secara paralel dengan mengexecute async dengan code berikut ini


 FirstAsyncTask asyncTask = new FirstAsyncTask(); // First  
 asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);  

tulisan ini saya buat supaya tidak terputus one day one article hehe

April 21, 2017

Clustering Orange pi pc2 dan orange pi zero dengan menggunakan dispy

Dispy merupakan framework clustering yang komprehensive dan sejauh ini mudah digunakan. dibuat untuk menjalankan komputasi secara paralel dan lintas multi prosesor dalam satu mesin (SMP), dispy juga baik untuk dipake untuk paradigma SMID.

dispy menggunakan assyncoro framework dalam proses assyncronous dan concurentnya, dispy dibuat menggunakan bahasa pemrograman python, jadi kita bisa menggunakan python untuk membuat program client yang mengakses cpu dari server dalam hal ini orange pi pc2 dan orange pi zero.

saya menggunakan in untuk riset pengetahuan seberapa powerfullkah SBC itu ternyata bagus juga untuk digunakan sebagai alternative pc mungkin baginya ngga punya dana besar pengen membuat superkomputer sbc bisa dijadikan alternatif meskipun tidak seratus persen sama dengan superkomputer tapi setidaknya kita sudah berusaha untuk membuat hal itu hehe malah jadi curhat, untuk informasi lebih lanjut soal dispy baca disini

sekarang kita unduh dan install terlebih dahulu dispy supaya bisa digunakan hehe, jika belum memiliki pip pasang terlebih dahulu pip dengan sudo apt install pip di armbian xenial xerus(ubuntu) / armbian jessie(debian) setelah itu install dispy dengan mengetikkan sudo pip install dispy.

setelah semuanya terinstall ketikkan ini pada sbc anda dispynode.py -i 192.168.43.115 (orange pi pc2) dan dispynode.py -i 192.168.43.56 (orange pi zero), 192.168.43.xxx merupakan ip sbc anda tulis sesuai ip sbc anda masing-masing hasilnya seperti digambar
sekarang pada client kita atau device lain yang kita gunakan untuk menjalankan program python karena saya menggunakan program python hehe, saya menggunakan thinkpad t420 sebagai client mari kita mulai ngoding

 import random, dispy  
 def compute(n):  
   import time, socket, random, math  
   name = socket.gethostname()  
   a, b = 0, 1  
   for i in range(0,n):  
    a, b= b, a + b  
   return (name, a)  
 if __name__ == '__main__':  
   cluster = dispy.JobCluster(compute, nodes=["192.168.43.56","192.168.43.115"], ip_addr="192.168.43.161")  
   jobs= []  
   for n in range(0,15):  
    job = cluster.submit(n)  
    if job is None:  
      print( 'creating job %s failed'% n )  
      continue  
    job.id = n  
    jobs.append(job)  
   cluster.wait()  
   for job in jobs:  
    if job.status == dispy.DispyJob.Finished:  
      print('%s compute: deret fibonacci ke-%s %s'% (job.result[0], job.id, job.result[1]))  
    else:  
      print(job.exception)  
   cluster.print_status()  
   cluster.close()  

untuk ip_addr="" isi dengan ip client yang kamu gunakan untuk membuat source code itu ip berapa hehe dalam nodes itu isi dengan ip sbcmu
hasilnya kurang lebih seperti gambar ini
jalankan source code yang kita namakan fibonacci.py dengan python fibonacci.py, dan liat lah hasilnya hehe semoga bermanfaat.

NB: untuk penjelasan source code nantikan aja ya kelanjutannya

April 20, 2017

Mount samba file sharing dari orange pi zero(server) kedalam mesin kita(Orange pi pc2(client))

Kalo Kemarin kita bahas lua maka kita istirahat sejenak dari bahas lua, sekarang kita bahas file sharing menggunakan samba yang mana dulu saya punya proyek nas menggunakan orange pi zero maka sekarang saya yang sudah menambah orange pi pc2 sebagai client dan yups keduanya ane pake headless tanpa monitor,keyboard dan mouse.

Saya mengakses keduanya menggunakan SSH(Secure SHell) maka saya akses terlebih dahulu orange pi pc2 kemudian saya memuat berkas yang dibagi oleh orange pi zero, oh iya sebelum melakukan aksi ini usahakan orange pi pc2 sudah terinstall samba dan cifs-utils jika belum lakukan ini sudo apt install samba cifs-utils.

untuk memuat file tersebut ketikan ini

mount -t cifs -o user=arba //192.168.43.56/DATAKU /media/arba

mount = mount directory cifs
-o = option open
user=arba artinya usernamenya arba
//192blabla itu ip server(opi zero) dan DATAKU adalah file yang di bagi
/media/arba adalah tujuan mount

begitu saja deh tulisan saya ahiri Terima Kasih.

Programming Lua part 2

Kemarin saya tulis tentang syntax dasar lua sekarang saya akan menulis tentang pembuatan fungsi pada lua, fungsi adalah subsquence yang kita gunakan untuk mengorganisir squence yang kita buat supaya kita bisa menggunakan squence tersebut tanpa menuliskannya berulang jadi kita tinggal memanggil fungsi tersebut kapanpun kita butuh.

Saya akan mencontohkan membuat fungsi untuk melakukan operasi faktorial dan saya akan menggunakan fungsi rekursif sekalian. Apa itu fungsi rekursif? Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri dalam squencenya.

baiklah kita buat file faktorial.lua ketik aja pada terminal nano faktorial.lua

 #!/usr/bin/env lua5.2  
 function faktorial(x)  
   if x == 0 then  
    return 1;  
   else   
    return x * faktorial(x-1)  
   end  
 end  
 io.write("Masukkan Angka : ");  
 a = io.read("*number");  
 print(faktorial(a));  
 output:  
 Masukkan Angka : 2  
 2  

function faktorial(x) disini kita mendefinisikan faktorial sebagai fungsi dengan parameter x jadi untuk menggunakan fungsi faktorial ini kita harus memasukkan parameter agar fungsi ini berjalan sebagaimana mestinya, if else kita gunakan sebagai suatu percabangan dari kondisi yang dimiliki parameter tersebut misalnya si parameter x tadi bernilai 0 apa yang akan dikerjakan komputer jika fungsi itu 0 maka diperlukan percabangan untuk menentukan action tiap kondisi tersebut nah dalam contoh ini action kita mereturn 1 atau kita memberikan hasilnya kepada si pemanggil dengan nilai 1 kenapa 1 bukan 2,3,4 atau yang lainnya? karena kita mendefinisikan faktorial dimana faktorial 0 adalah 1, nah kalo ternyata si x ini bernilai 2 dan itu tidak memenuhi syarat dari si if yang mensyaratkan harus sama dengan 0 maka masuk ke bagian else nah di else kita membuat action me return si dengan hasil dari x dikalikan dengan faktorial dari x - 1 faktorial disini adalah fungsi yang kita buat jadi bisa dikatakan kita menggunakan fungsi faktorial kenapa musti minus satu kenapa tidak plus 1 karena untuk mencegah itu memanggil fungsi tersebut berulang-ulang tampa berkesudahan tapi kalo kita memasukkan parameter dengan x minus 1 maka dia akan berhenti di if x==0 yang mereturn 1 begitu kira-kira penjelasannya hehe, dalam contoh tersebut return yang kita berikan adalah sebagai berikut 2 kali faktorial(1) kemudian menjadi 2 kali 1 kali faktorial(0) yang pada ahirnya menjadi 2 kali 1 kali 1 = 2.

io.write() adalah fungsi yang digunakan untuk menampilkan kedalam monitor tanpa newline berbeda dengan print yang menyertakan newline
a = io.read("*number"); kita membaca inputan keyboard dan hanya mengambil yang angka  saja kemudian dimasukkan kedalam variabel a kalo kita masukkan huruf maka akan terjadi galat karena tidak ada yang diambil dan variabel a bernilai null aka nil dalam lua sehingga fungsi yang kita buat tidak berfungsi atau terjadi galat
print(faktorial(a)); kita mencetak hasil return dari fungsi faktorial yang kita buat dengan parameter a dimana a merupakan hasil dari inputan keyboard

demikian tulisan saya semoga mudah dipahami.

April 19, 2017

Programming lua part 1

Saya kemarin iseng-iseng nyari tau sesuatu yang bisa saya explore ahirnya saya menemukan lua, dan menurutku bahasa pemrograman lua cukup simple dan gampang dicerna. lua memang sengaja dirancang supaya dinamis, ringan dan ringkas dan yang paling penting tidak memiliki aturan yang ketat.

marilah kita mulai menulis skrip lua kita beri nama hello.lua

 #!/usr/bin/env lua5.2  
 print("Hello, Lua!");  
 -- ini sebuah komen satu baris  
 --[[ ini digunakan untuk membuat komen beberapa baris   
 dan tidak akan ditampilkan. ]] 
output: 
$ chmod +x hello.lua
$ ./hello.lua
Hello, Lua!
$

#!/usr/bin/env lua5.2 lua5.3 merupakan baris yang kita gunakan untuk pemberitahuan ke komputer kita bahwa kita ingin menggunakan intepreter lua5.2, lua5.3 dll bisa juga untuk python, bash dan semua script yang kita buat tapi karena kita membua script lua jadi kita memanggil intepreter lua sedangkan 5.2 atau 5.3 merupakan versi dari lua yang akan kita pake

print() merupakan sebuah fungsi atau method untuk mencetak tulisan kedalam monitor dalam hal ini pada terminal dan sekaligus create newline jika tidak ingin newline maka gunakanlah io.write().

begitulah aku harap dapat dipahami, aku sulit sekali menulis sesuatu yang bisa mudah ditangkap orang, pada part 2 nanti insya allah akan saya tuliskan mengenai pembuatan fungsi pada lua, terima kasih buat yang udah baca.

April 18, 2017

Akses Orange pi pc2 headless SSH melalui usb tethering android

Tulisan ini saya tulis berdasarkan permasalahan yang saya hadapi dikantor saya yang tidak ada televisi sehingga saya bingung gimana caranya akses orange pi pc2 yang mana belum support wifi setelah dirumah saya memiliki led tv saya kepiikiran untuk konek internet lewat tethering usb karena saya tidak mmemiliki router dan kabel lan eh ternyata bisa konek internet.

Jadi saya dapat ide lagi kalo gitu saya bisa ssh menggunakan juice ssh tapi ane dapet ide pake termux setelah baca blog pak apip(bluemeda) dalam artikel ini dan untuk mendapatkan ip orange pi pc2 menggunakan ip tools caranya bagaimana ikuti langkah-langkahnya sebagai berikut:

1. pasang power adapter kedalam port power dan jack 3.5 kedalam portnya dan juga kabel usb kedalam port usb dan pastikan juga terhubung ke smartphone via port microusb.

 2. tunggu sampai led menyala warna hijau untuk armbian selain armbian biasanya berwarna terus buka smartphone masuk ke menu setting kemudian cari usb tethering.

3.  buka ip tools terus menu kanan atas, pilih lan scanner terus masukkan ip 192.168.42.1 terus tekan panah tunggu sampai ketemu ip orange pimu.




4. buka juice ssh terus tekan actionbar sebelahnya pengaturan gambar yang mirip petir itu terus masukin username dan ipnya seperti ini contohnya arba@192.168.42.12 lalu tekan ok.
 keterangan: arba merupakan username orange pi anda dan 192.168.42.12 adalah ip orange pi anda yang didapat dari ip tools





disini masukkan password untuk usernamemu



dan hasilnnya akan seperti berikut

goodluck bray.

April 17, 2017

Install Zekr

Karena ALQuran saya dirumah kebanyakan rusak dimakan rayap jadi saya memutuskan utuk menginstall zekr pada armbian xenial xerus yang saya pasang pada Orange pi pc2. Saya memilih zekr karena tampilannya yang sederhana, mudah digunakan dan yang paling penting ada fiturmemutar audio murrotal para qari terkenal di seluruh dunia.

Saya menginstallnya dengan menggunakan sudo apt-get install zekr, kemudian ketika saya coba membuka zekr ternyata terdapat galat dan setelah saya browsing saya menemukan solusi yaitu dengan menginstall libwebkitgtk-1.0-0 maka saya memasang lib tersebut dengan sudo apt-get install libwebkitgtk-1.0-0 tunggu sampai proses instalasi selesai.

Jalankan kembali zekr maka tidak akan ada error lagi dan kita bisa memulai membaca alquuran dan mentadaburinya. Zekr merupakan aplikasi pilihan saya untuk aplikasi alquran karena saya benar-benar cocok dengan zekr.


gimana tertarik mencoba?

April 16, 2017

Sehari tanpa laptop

saya berencana mengadakan event tidak menggunakan laptop selamanya per 15 april 2017 sampai nanti ane nyerah dan berhenti dari event ini. event ini hanya saya lakukan di rumah karena dikantor saya memerlukan laptop untuk bekerja, lalu kalo tidak menggunakan laptop menggunakan apa dong? saya menggunakan Single Board Computer Orange pi pc2 mini pc buatan xunlong untuk kebutuhan komputasi harian dirumah setelah bekerja.

Internet menggunakan usb thetering yang awalnya aku pikir tidak bisa dilakukan ternyata bisa. Browser yang saya pakai adalah mozilla firefox, enak sekali ini browsing di sbc layaknya menggunakan pc desktop dan suhu sbc ini masih relative dingin tidak seperti opi zero saya yang langsung kepanasan

hari ini saya optimis bisa ngga menyalakan laptop dirumah , dirumah adalah waktu bersama dengan orange pi pc2 yang menurutku udah cukup buat ganntiin laptop saya untuk kebutuhan sehari-hari diluar kerjaan.

April 15, 2017

sebuah nalar

Apasih yang kita pikirkan tentang uang? apa fungsi uang? kenapa butuh uang? apa yang kita dapatkan dengan uang? lebih baik manakah uang atau integritas? berapa jumlah uang yang ada ditanganmu? pertanyaan-pertanyaan itulah yang terus menghantuiku ahir-ahir ini

jadi aku pilih mana punya uang tapi ngga punya integritas atau punya integritas tapi ngga punya uang? manakah yang akan aku pilih entahlah aku lebih memilih biarlah kehidupan ini mengalir apa adanya terus nikmati aja proses yang harus aku jalani. dan satu lagi hantu yang dihembuskan orang di sekitarku yaitu kapan nikah? dalam prinsipku jodoh itu akan bertemu pada saat dirimu sudah siap menjalani kehidupan dunia yang tak tertebak ini.

sedangkan aku belum siap menerima kejutan dari kehidupan karena aku adalah orang yang gampang sekali kagetan nah begitulah kisahku hari ini, ngomong-ngomong kalian pilih yang mana punya uang tapi tak memiliki integritas atau punya integritas tapi ngga punya uang?

April 14, 2017

Armbian Xenial Xerus

Armbian Xenial Xerus merupakan distro ubuntu yang di optimalisasi untuk SBC bisa orange pi, bananapi, odroid, nanopi, pesaingnya yang bagus adalah dietpi raspbian secara default hanya untuk raspberry pi. Armbian xenial xerus menggunakan Desktop Environment XFCE sejauh ini cukup bagus dan menjanjikan.

Armbian Xenial Xerus ini aku pasang pada Orange Pi Pc2 , secara default menyediakan libre office writer tanpa calc dan impress, xterm sebagai default terminal, calculator, mpv media player, armbian monitor, sysbench, browser firefox, python,gcc, gnu assembler.

begitulah armbian xenial xerus yang saya install semua aplikasi yang ada pada armbian xenial xerus merupakan bawaan dari imagenya karena saya mengoperasikan secara offline.

April 13, 2017

Menilik Openbsd 6.1

Setelah hampir 6bulan tidak pernah lagi berurusan dengan openbsd pada ahirnya saya dapat waktu sedikit untuk ngulik openbsd 6.1 yang menurut saya tidak ada perubahan berarti desktopnya. Dari sisi C compilernya masih menggunakan gcc versinya 4.2.1 padahal saya berharap yang openbsd 6.1 sudah menggunakan clang seperti saudaranya freebsd. Yang paling menggembirakan buat saya adalah sudah tersediannya gnu debuger sehingga cukup membantu saya dalam membuat software, serta menganalisa kesalahan algoritma yang saya buat.

as aka gnu assembler mungkin akan sering saya pakai di openbsd 6.1, openbsd 6.1 mungkin akan jadi laboratorium coba-coba saya mengganti debian SID ,tempat dimana saya berexperimen dengan apa yang dipunyai openbsd ini nantikan oprekan saya pada openbsd untuk masalah installasi masih sama seperti openbsd 6.0.

April 12, 2017

Emulasi Unix V7 dengan SIMH


Kali ini saya akan menulis tentang unix v7 cara mengemulasi tentu saja menggunakan simh emulator karena arsitekturnya berbeda dengan laptop saya thinkpad t420, simh terutama emulator yang untuk pdp11 dapat kita gunakan untuk menjalankan unix v7, unix v7 dibuat pada tahun 1979. ayo kita mulai bermain dengan unix v7, pastikan kamu sudah menginstall simh emulator kalo belum unduh source codenya di http://simh.trailing-edge.com/ atau untuk pengguna debian based anda bisa melakukan sudo apt-get simh dan tentu saja memiliki tape unix v7 download aja di https://simh.trailing-edge.com/kits/uv7swre.zip

untuk yang memilih mengompile seperti saya maka masuk ke source code simh kemudian buat directori BIN dengan mkdir BIN setelah directory bin terbentuk ketik make maka source code akan dikompilasi kedalam directori BIN jadi directory BIN digunakan untuk menampung hasil kompilasi. Pindah ke directory BIN dengan cd BIN setelah ketikan ./pdp11 nanti akan muncul prompt sim> setelah muncul prompt tersebut lakukan langkah berikut ini
1. set cpu 11/45.
perintah ini digunakan untuk menset tipe cpu ke pdp-11/45
2. set tto 7b.
Perintah ini untuk menset teletype output menjadi 7bit
3. att rl /home/arba/unixv7/unixv7rl.dsk
perintah untuk mengattach berkas unixv7rl.dsk ke rl device
4. boot rl.
Perintah untuk memboot
5. boot
6. rl(0,0)rl2unix
7. mkdir /tmp
8. chmod 777 /tmp
9. mkdir /usr/dmr
10. chown dmr /usr dmr
11. ctrl + d
12. login: dmr
step-step diatas diketikan pada prompt sim> .


 $ cat << EOF > t.c  
 > main(){  
 >  printf("Hello, Unix!\n");  
 > }  
 > EOF  
 $ cat t.c  
 main(){  
   printf("Hello, Unix!\n");  
 }  
 $ cc t.c  
 $ a.out  
 Hello, Unix!  
 $  

April 11, 2017

Perbandingan Assembly aarch64 dengan arm 32

kemarin saya mencoba iseng membuat program dengan gnu assembler pada aarch64 dengan prosesor allwiner h5, lumayan rumit jika dibandingkan dengan assembly di allwiner h2 atau allwiner h3 berikut ini perbedaannya.

assembly untuk allwiner h2 /h3

 .text   
 .global main  
 main:  
     push {ip, lr}   
     mov r1, #15  
     ldr r0, =text  
     bl printf  
     pop {ip, pc}  
 .data  
 text: .asciz "hello, world %d\n"  

assembly aarch64 untuk allwiner h5

 .text  
 .global main  
 main:  
     stp x29, x30, [sp, -16]!  
     add x29, sp, 0  
     adrp x0,text  
     mov x1, 15  
     add x0, x0, :lo12:text  
     bl printf  
     mov w0, 0  
     ldp x29, x30, [sp], 16  
     ret  
 .data  
 text: .asciz "hello, world %d\n"  

jelas sekali kan arm 32 lebih sedikit daripada aarch64 keduanya menghasilkan output hello, world 15
tapi prosesnya lebih panjang aarc64.
demikianlah hasil iseng saya kemarin nantikan keisengan saya selanjutnya

April 10, 2017

refresh otak

Rutinitas memang menjengkelkan maka sesekali kita perlu keluar sejenak dari rutinitas itu dengan mengerjakan sesuatu yang baru, seperti ahir-ahir ini saya mulai ngoprek orange pi pc2 dan orange pi zero. Dua SBC inilah yang membantuku untuk keluar dari rutinitasku dengan bermain dengan gpio dan lain-lainnya sangat banyak kegunaan sbc ini yang belum saya sentuh karena keterbatasan pengetahuan saya.

Orange pi pc2 yang saya beli kemarin ahirnya saya jadikan desktop dirumah saya sekaligus lahan buat saya untuk bermain bahasa pemrogramman assembly aarch64. cukup mengejutkan saya yang terbiasa assembly arm 32 aka armv7 karena stylenya beda banget.

 Saya merasakan 4 usb port belum lah cukup saya masih membutuhkan port usb tambahan untuk harddisk external dan wireless dongle usb untuk keperluan internet wireless saya hehe, ada satu port orange pi pc2 yang belum saya coba yaitu port scsi untuk kamera yang belum saya coba padahal saya memang ingin sekali mencobanya namun apa daya belum terbeli hardwarenya hehe.

April 09, 2017

Review Orange Pi PC 2

kurang lebih seminggu yang lalu saya membeli orange pc2 dari kere keren store milik ceroberoz, saya membeli orange pi pc2 set 4 yang berisi board orange pi pc2 dan power adapter 5v/3a dc, kemudian saya membeli mouse usb, microsd 16gb dan kabel hdmi to hdmi totalnya 155 ribu rupiah, Dan hasilnya tak terlalu mengecewakan.

Tadi ane menginstall armbian ubuntu xenial xerus nightly image pada orange pi pc 2 yang sudah aarch64(armv8), saya menggunakan microsd sandisk ultra 16gb sebagai media penyimpanannya monitornya menggunakan ledtv sharp aquos, usb keyboard dan usb mouse untuk melakukan controling hasilnya luar biasa keren sbcnya bisa nih menggantikan pc untuk kebutuhan sehari-hari ane.
  
Orange Pi PC 2 menggunakan prosesor allwiner h5 yang sudah mengimplementsikan arm a53, sbc ini luar biasa untuk ukuran sbc dengan harga 400an ribu,memutar vdeo dan audio hasilnya cukup memuaskan buat ane, dan hasil bencmarkya lebih maknyus daripada opi zero ane, lebih fast dan suhu orange pi pc 2 2kali lebih dingin daripada opi zero ane yang bisa mencapai 70 derajat celsius sedangkan suhu opi pc 2 berkisar 46 derajat celsius tanpa heatsink ataupun kipas. Meskipun ram 1gb di share dengan gpu tidk menjadikan orange pi pc 2 lambat buat komputasi harian saya bahkan saya menggunakan os dan applikasi yang aarch64 pun tetap smooth benar benar luar biasa.

berikut ini hasil screenshot dan foto-foto karena kata orang no pic = hoax hehe







April 08, 2017

Beberapa Intruksi dalam Bahasa Assembly


Bahasa Assembly adalah bahasa pemrograman tingkat rendah untuk komputer ataupun untuk perangkat yang dapat di program, bahasa assembly berkaitan sangat erat dengan arsitektur processor oleh karenanya kode untuk processor arm akan berbeda dengan x64 bahkan arm32bit berbeda dengan arm64bit.

Source code bahasa assembly akan diterjemahkan oleh assembler menjadi bahasa yang dapat dipahami processor jadi tiap assembler memilik aturan sendir-sendiri. Saya menggunakan gnu assembler pada distro armbian jessie untuk sbc orange pi zero saya, saya akan menuliskan beberapa mnemonic bahasa assembly yang sering digunakan.

1. LDR
LDR adalah mnemonic yang digunakan untuk meload suatu variabel menjadi register atau untuk mengambil nilai dari suatu variabel yang telah kita load. Formatnya seperti ini

LDR target, asal

contoh:

LDR R0, =var
dan untuk mengambil nilai dari var
LDR R0,[R0]

2. MOV
MOV digunakan untuk melakukan inisiasi nilai sebuah register mov dalam bahasa lain seperti ini fungsinya int a=1, formatnya adalah seperti ini

MOV tujuan, asal
MOV R2, #43 artinya inisiasi atau memberi nilai register R2 dengan decimal 43 R2=43

3. ADD
ADD digunakan untuk melakukan operasi penjumlahan register , angka yang kita tuliskan.

ADD tujuan , asal
ADD R12, R1,R2 atau ADD R1, #1

contoh programnya adalah sebagai berikut

 .text  
 .global main  
 main:  
 push {ip, lr}  
 mov r1, #0xab  
 mov r2, #0xde  
 add r3, r1, r2  
 ldr r0, =output  
 bl printf  
 pop {ip,pc}  
 .data  
 output: .asciz "0x%08x + 0x%08x = 0x%08x\n"  

April 07, 2017

General Purpose Register ARM

Tulisan ini adalah lanjutan dari artikel kemarin yang membahas register pada ARM sekarang akan dilanjutkan dengan register general purpose. ARM membatasi penggunaan SP dan LR sebagai general purpose register kecuali processor yang berdasarkan ARMv6-M dan ARMv7-M, ada 30 (atau 32 jika security extension telah diimplementasikan) general purpose 32bit register, termasuk didalamnya register SP dan LR.

15 register terlihat pada satu waktu, tergantung mode processor yang dipakai saat ini. 15 register tersebut yaitu R0-R12,SP,LR sedangkan CP(R15) bukan merupakan generan purpose register. SP atau R13 merupakan stack pointer. Kompiler C atau C++ selalu menggunakan SP sebagai stack pointer. LR atau R14 digunakan pada mode user digunakan sebagai link register untuk menyimpan alamat return ketika sebuah subroutine call telah dibuat. Dapat juga digunakan sebagai general purpose register, jika alamat return telah disimpan pada stack.

Contohnya adalah sebagai berikut
 .text 

 .extern printf @inisialisasi fungsi external printf kalo dalam bahasa c didalam header stdio.h 

 .global main 

 main: 

 push {ip, lr} @ akses link register 

 ldr r0, =string @load variabel string sebagai R0 

 bl printf @ memanggil fungsi printf 

 pop {ip,pc} 

 .data 

 string: .ascii "Hallo, Assembly\n" 


simpan sebagai sample.s kemudian compile program ini dengan perintah
as -g -o sample.o sample.s
gcc -o sample sample.o
./sample

kamu akan melihat tulisan Hallo, Assembly

mencoba menggunakan zram di raspberry pi

saya beberapa hari yang lalu mencoba mengaktifkan zram untuk membuat cadangan jika ram udah hampir penuh untuk dipindah ke zram, sejauh ini...