• Tidak ada hasil yang ditemukan

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

N/A
N/A
Protected

Academic year: 2021

Membagikan "Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB"

Copied!
7
0
0

Teks penuh

(1)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1

MODUL 1 KOMPILASI DAN DISASSEMBLE PROGRAM

Septian Gilang Permana Putra (13210003)

Asisten: Kevin Hendharta Tanggal Percobaan: 25/10/2011

EL3110-Praktikum Arsikom

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Abstrak

Pada praktikum kali ini, topik yang dibahas adalah

kompilasi dan disassemble program Pada praktikum ini

akan dilakukan 6 percobaan dengan tujuan untuk

mengetahui cara tahap menerjemahkan bahasa C menjadi file

eksekusi, mengetahui pengaruh perbedaan tingkat optimasi

terhadap kode assembly dan file eksekusi yang dihasilkan,

serta mengetahui cara kerja kompilasi dengan makefile. Dari

percobaan yang dilakukan didapat kesimpulan bahwa:

Proses untuk bahasa C menjadi file eksekusi melewati 4

langkah, yaitu pre-processor, compiler, assembler, dan linker.

Secara umum semakin tinggi tingkat optimasi akan

menyebabkan waktu kompilasi semakin lama, file eksekusi

yang dihasilkan berukuran semakin besar, dan program yang

dihasilkan semakin cepat. Proses kompilasi dapat dilakukan

dengan membuat file ’makefile’ lalu memberikan

perintah ”migw32-make” pada Command Prompt.

Kata kunci: pre-prosesor, compiler, assemble, linker,

dissasemble, tingkat optimasi, makefile.

1.

D

ATA

1.1

PERCOBAAN 1

Percobaan ini hanya membuat file ‘code.c’. Source code untuk file ‘code.c’ ini ada pada lampiran.

1.2

PERCOBAAN 2

Pada percobaan ini didapatkan data screenshot berikut.

Screenshoot preprosesing, compile, serta compile dan assemble dgn optimasi -O2

Screenshoot saat running program dgn optimasi O2

Screenshoot code.s untuk optimisasi –O2

Screenshoot code.o untuk optimisasi –O2

1.3

PERCOBAAN 3

Pada percobaan ini didapatkan data screenshot berikut.

(2)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2 Screenshoot disassembler code.o dgn optimasi –O2

Screenshoot disassembler prog.exe dgn optimasi –O2

1.4

P

ERCOBAAN

4

Pada percobaan ini didapatkan data screenshot berikut.

Screenshoot compile, compile dan assemble serta disassembler dgn optimasi –O1

Screenshoot compile, compile dan assemble serta disassembler dgn optimasi –Os

Screenshoot compile, compile dan assemble serta disassembler dgn optimasi –O3

Screenshoot code.s untuk optimisasi –O1

Screenshoot code.s untuk optimisasi –O3

Screenshoot code.s untuk optimisasi –Os

1.5

PERCOBAAN 5

Pada percobaan ini didapatkan data screenshot berikut.

(3)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 3 Screenshoot running coba.exe

Screenshoot running coba.exe setelah text.c diubah

1.6

T

UGAS

(P

ROGRAM

F

IBONACCI

)

Pada percobaan ini didapatkan data screenshot berikut.

Screenshoot running coba.exe

2.

ANALISIS

2.1

PERCOBAAN 1

Pada percobaan 1 ini kita membuat fungsi sum yang merupakan operator penjumlah. Fungsi ini memberikan output hasil penjumlah, selain itu juga fungsi ini akan mengubah sebuah variabel bernama accum yang merupakan total dari hasil penjumlahan yang pernah dilakukan . Selain itu tidak ada yang bisa dianalisis dari percobaan 1.

2.2

PERCOBAAN 2

Setelah command untuk preprosesor diberikan akan muncul tulisan yang sebagian berisi tentang sourcecode yang kita tulis, dalam hal ini ’code.c’ dengan mengganti variabel yang sudah didefine sebelumnya, dalam hal ini adalah ’START_VAL’. Compile dan assembler akan menghasilkan object code. Object code adalah serangkaian instruksi dalam bahasa mesin yang sudah dapat dibaca langsung oleh computer namun masih perlu di

linking dengan object code lain sehingga dapat menjadi executable file. Komputer menyimpan

object code sebagai file kode objek dalam format (.o), dalam percobaan ini salah satu contohnya adalah ’code.o’.

Agar pada main.c dan fungsi sum() dapat digunakan caranya adalah dengan menginclude langsung ’code.c’ dalam source code main, sepertti yang ditunjukkan oleh ’main1.c’ pada lampiran.

2.3

P

ERCOBAAN

3

Pada percobaan 3, proses disassembler pada file kode objek ’code.o’ serta file program eksekusi ’prog.exe’ menghasilkan kode dalam bentuk bahasa assembly.

Jika kita bandingkan hasil disassembler pada file kode objek ’code.o’ dengan file program eksekusi ’prog.exe’, kita dapatkan hasil disassembler pada file program eksekusi menghasilkan code assembly yang lebih panjang dan kompleks dibanding hasil disassembler pada file kode objek. Hal ini dikarenakan file program eksekusi merupakan gabungan dari beberapa file kode objek yang disatukan dalam proses linker, sehingga pantas jika code assembly dari file program eksekusi lebih kompleks.

2.4

P

ERCOBAAN

4

Pada percobaan 4 ini kita melakukan mencoba melakukan proses kompilasi dan disassembler dengan tingkat optimasi yang berbeda dari sebelumnya, yaitu -O1, -O3, dan –Os.

Jika kita membandingkan kode assembly ’code.s’ yang dihasilkan antara tingkat optimasi –O1 dan – O2, kode assembly yang dihasilkann oleh optimasi –O2 lebih panjang 1 baris dibandingkan –O1. Hal tersebut dikarenakan pada optimiasasi –O2 terdapat tambahan fitur instruction scheduling yang tidak terdapat pada optimisasi –O1. Untuk kode assembly pada -O3 sama dengan –O2, hal ini dapat terjadi karena tidak ada bagian yang dapat dioptimisasi lagi oleh dengan –O3. Sedangkan untuk kode assembly pada –Os, lebih panjang dari -O2, karena optimisasi dengan –Os memiliki fitur yang tidak dimiliki -O2 yaitu menghasilkan file eksekusi yang ukurannya sekecil mungkin.

Secara umum semakin tinggi tingkat optimasi akan menyebabkan waktu kompilasi semakin lama, file eksekusi yang dihasilkan berukuran semakin besar, dan program yang dihasilkan semakin cepat. Jika kita membandingkan tingkat optimasi -O2 dan –O3 pada praktikum ini, tingkat optimasi –O2 menghasilkan file eksekusi (‘prog.exe’) yang sama besarnya dengan tingkat optimasi -O3 yaitu 27.654 byte. Selain itu proses

(4)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 4 kompilasi untuk optimisasi -O2 lebih cepat

dibanding -O3. Untuk kecepatan program, tidak ada perbedaan diantara keduanya.

2.5

P

ERCOBAAN

5

Setelah memberikan perintah ”migw32-make” pada Command Prompt, yang terjadi adalah sourcecode yang kita buat tadi berhasil di compile dan assemble menjadi sebuah executable file ’coba.exe’. Dari hasil tersebut, hal yang dapat disimpulkan adalah cara melakukan proses compile dan assemble suatu source code tidak hanya dengan memberikan perintah ”gcc” pada Command Prompt, tapi juga dapat dengan cara membuat file makefile lalu memberikan perintah ”migw32-make” pada Command Prompt. Setelah text.c diganti, maka output tulisan menjadi juga berganti seperti yang ditunjukkan pada screenshoot di atas. Hal ini menunjukkan, kita dapat membagi ”tugas” yang berbeda dalam beberapa file C. Secagai contohnya text.c dalam program ini bertugas mengatur masalah output teks yang akan ditampilkan.

2.6

T

UGAS

(P

ROGRAM

F

IBONACCI

)

Pada tugas untuk membuat program deret fibonacci ini saya mengimplementasikannya menggunakan for to do, bukan dengan cara rekursif seperti biasanya. Program ini terdiri dari 2 file C, fibo.c untuk menghitung hasil deret fibonacci dengan inputan angka tertentu, dan inputn.c untuk meminta inputan angka tertentu tadi dari user sekaligus menjadi main program. Karena input untuk fungsi fibonaci adalah bilangan positif, maka pada inputn.c ditambah algoritma untuk memverifikasi input tersebut. Source code untuk inputn.c, fibo.c dan makefile ada pada lampiran.

3.

KESIMPULAN

Kesimpulan yang dapat diambil dari serangkaian percobaan yang dilakukan kali ini adalah:

 Proses untuk bahasa C menjadi file eksekusi melewati 4 langkah, yaitu pre-processor, compiler, assembler, dan linker.  Secara umum semakin tinggi tingkat

optimasi akan menyebabkan waktu kompilasi semakin lama, file eksekusi yang dihasilkan berukuran semakin besar, dan program yang dihasilkan semakin cepat.

 Proses kompilasi dapat dilakukan dengan membuat file ’makefile’ lalu memberikan

perintah ”migw32-make” pada Command Prompt.

(5)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 5

L

AMPIRAN

*Untuk code assembly, sudah ada

screen shoot

nya di bagian Data

1.

Source code untuk ‘code.c’ :

#define START_VAL 0

int accum = START_VAL;

int sum(int x, int y) {

int t = x + y; // variabel t diisi hasil a+b

accum += t; // nilai accum ditambah sebesar t

return t; // fungai mengoutputkan nilai t

}

2.

Source code untuk ‘main.c’ :

#include <stdio.h>

void main (){

int a,b;

scanf ("%d %d",&a,&b); //input nilai variabel dan b

printf ("%d",sum(a,b)); //print hasil dari a+b

}

3.

Source code untuk ‘main1.c’ :

#include <stdio.h>

#include "code.c"

void main (){

int a,b;

printf ("%d\n",accum); // print nilai awal accum

scanf ("%d %d",&a,&b); //input nilai variabel dan b

printf ("%d\n",sum(a,b)); // print hasil dari a+b :

printf ("%d\n",accum); // print nilai akhir accum

}

4.

Source code untuk ‘main_text.c’ :

#include "text.h"

void main (){

test();

}

(6)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 6

5.

Source code untuk ‘text.c’ :

#include <stdio.h>

#include "text.h"

void test(){

printf ("Arsitektur Komputer I !\n");

}

6.

Source code untuk ‘text.h’ :

#ifndef TES_H

#define TES_H 100

void test();

#endif

7.

Source code untuk makefile:

all:coba

coba:main_text.o text.o

gcc main_text.o text.o -o coba

main_text.o:main_text.c

gcc -c main_text.c

text.o:text.c

gcc -c text.c

8.

Source code untuk ‘text.c’ setelah diubah:

#include <stdio.h>

#include "text.h"

void test(){

printf ("TES_H = %d\n",TES_H);

}

9.

Source code untuk ‘inputn.c’:

#include <stdio.h>

void main (){

int n;

do{

(7)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 7

scanf("%d",&n); // input nilai n

if (n<=0){

printf("\nInput harus >0 \n");

}

}while (n<=0); //validasi input agar selalu bilangan positif

fibonacci(n); //pemanggilan fungsi fibonacci

printf("\n");

}

10.

Source code untuk ‘fibo.c’:

#include <stdio.h>

void fibonacci(int n){

int a = 0;

int b = 1;

int sum, i;

for (i=0;i<n;i++){

printf("%d ",b);

sum = a + b;

a = b;

b = sum;

}

}

11.

Source code untuk makefile :

all:coba

coba:inputn.o fibo.o

gcc inputn.o fibo.o -o coba

inputn.o:inputn.c

gcc -c inputn.c

fibo.o:fibo.c

Referensi

Dokumen terkait

yang berasal dari komite sekolah, hendaknya pihak sekolah melakukan pendekatan yang lebih baik lagi kepada orang tua siswa, sehingga tunggakan yang terjadi

Development Plan for Jakarta’s Coastal Area [Great Sea Wall] Soekarno-Hatta International Airport Jakarta Old City Ancol PLUIT Pantai Kapuk HARBOUR TOLLROAD. INNER

TENTANG PELAKSANAAN SELEKSI KOMPETENSI DASAR (SKD) DALAM RANGKA PENERIMAAN CALON PEGAWAI NEGERI SIPIL KEMENTERIAN AGRARIA DAN TATA RUANG/BADAN PERTANAHAN NASIONAL TAHUN 2018.. NOMOR

Menindaklanjuti Pengumuman Ketua Tim Pelaksana Pengadaan Aparatur Sipil Negara Pemerintah Kabupaten Pekalongan Nomor 810/1536/2018 Tentang Hasil Seleksi Administrasi

 Terkait telah adanya perbaikan pencemaran di lokasi base camp sehingga kondisi base camp paket sedang konstruksi sudah mulai membaik maka diperlukan kerjasama yang

1) Tidak terhubungnya jaringan internet ke komputer membuat siswa tidak dapat mengakses web pembelajaran secara bersamaan. 2) Untuk penugasan di luar kelas, siswa kesulitan

Strategi KIE yang dapat dilakukan Apotek Mitrasana PUP untuk memengoptimalkan KIE sesuai dengan profil pelanggan dan keadaan KIE saat ini di outlet Mitrasana PUP antara

Workshop Penyusunan Karya Tulis Ilmiah bagi Guru Pendidikan Agama Islam Tahun 2015 Pada kantor Kementerian Agama Tuban.. No Nama Peserta Asal Sekolah