1) . Perbedaan Bahasa Asembler/Asembly dengan Bahasa C/C++
- Bahasa
Assembly
Karena Bahasa
Mesin sangat rumit untuk diprogram secara langsung (karena berupa bilangan
numeric), sehingga dibuat suatu symbol pelambang (mnemonic) untuk mewakili
masing-masing instruksi tersebut yang lebih mudah diingat dan dibaca oleh
manusia (bayangkan apakah anda lebih mudah mengingat nama teman anda atau nomor
telepon rumahnya?).
- Bahasa Mesin
Setiap jenis CPU memiliki bahasa mesin-nya masing-masing. Instruksi bahasa mesin dinyatakan dalam bilangan numeric (Binari) yang tersimpan sebagai byte dimemori. Masing-masing instruksi memiliki kode numerik yang unik yang disebut sebagai “operation code” atau “opcode”. Setiap perintah diawali dengan suatu opcode dan dapat diikuti oleh data.
2) . struktur Gambaran ketika melakukan Compiler
Bagian-bagian
Compiler:
a. Lexical
Analiysis (scanner), Lexical Analysis sering disebut Scanner bertugas
untuk mendekomposisi program sumber menjadi bagian-bagian kecil. Tugasnya
secara detail adalah mengindentifikasi semua besaran yang membangun suatu
bahasa; mentransformasikan, dan menentukan jenis token; menangani kesalahan dan
tabel simbol. Contoh besaran Leksikal :
1. Identifier,
dapat berupa keyword atau nama kunci, seperti IF.. ELSE, BEGIN..END
(pada Pascal), INTEGER (pascal), INT,FLOAT (bahasa C).
2. Konstanta, terdiri
dari besaran yang merupakan bilangan bulat (integer), bilangan pecahan (float/Real), boolean (true/false), karakter, string, dan sebagainya.
3. Operator,
terdiri dari operator aritematika ( + - * /), operator logika ( < = > ).
4. Delimiter, berguna
sebagai pemisah/pembatas, seperti kurung buka, kurung tutup, titik, koma,titik
dua, titik-koma
5. White
Space, pemisah yang diabaikan oleh program seperti : enter, spasi, ganti
baris, akhir file.
b. Syntax
Analysis, bertugas memeriksa kebenaran urutan dari token-token yang terbentuk
oleh lexical analysis. Syntax Analysis sering disebut Parser, sedangkan
proses pen-deteksian-nya (pengenalan token) disebut dengan parsing.
Pengelompokan token-token kedalam class syntax (bentuk syntax), seperti procedure,
Statement,dan expression.
c. Semantics
Analyser, proses ini adalah proses kelanjutan dari proses kompilasi sebelumnya,
yaitu analisa leksikal (scanning) dan analisa sintaks (parsing).Parser hanya
akan mengenali simbol-simbol '=', '+' dan '*', parser tidak mengetahui makna
dari simbol-simbol tersebut, untuk mengenali simbol-simbol tersebut Compiler
menggunakan Analysis Semantics. Pemeriksaan biasa dilakukan pada tabel indentifier, tabel display,dan
tabel block.
d. Intermediate
Code, bertujuan untuk memperkecil usaha dalam membuat compilator dari sejumlah bahasa ke sejumlah mesin.
e. Code
Optimization, bertujuan untuk mengoptimalkan code, terdiri dari:
1. Dependensi
Optimasi, bertujuan untuk menghasilkan kode program yang berukuran lebih kecil
dan cepat.
2. Optimasi
Lokal, adalah optimasi yang dilakukan hanya pada suatu blok dari source code.
3. Optimasi
Global, biasanya dilakukan dengan suatu graph terarah yang menunjukkan jalur
yang mungkin selama ekskusi programa.
f. Table
Management,memiliki dua fungsi penting yaitu : (1) membantu pemeriksaan
kebenaran semantik dari program sumber, (2) membantu dan mempermudah dalam
pembuatan intermediate code dan proses pembangkitan kode. Ada beberapa jenis
Tabel Informasi:
1. Tabel
identifier, berfungsi menampung semua identifier yang terdapat dalam
program.
2. Tabel
Array, berfungsi menampung informasi tambahan untuk sebuah array.
3. Tabel
blok, mencatat variabel-variabel yang ada pada blok yang sama.
4. Tabel
Real, menyimpan elemen tabel bernilai real.
5. Tabel
string,menyimpan informasi string.
6. Tabel
display, mencatat blok yang aktif.
g. Error
Handling, yaitu kesalahan program dalam proses penerjemahan pada Compiler. Kesalahan program dapat berupa :
1.Kesalahan
Leksikal karena kesalahan dalam mengetik/mengeja.
2.Kesalahan
Sintaks karena kesalahan rumus, misalnya dalam operasi aritematika dengan tanda
kurung yang jumlahnya kurang.
3.Kesalahan
Semantic karena tipe data yang salah atau variabel yang belum didefinisikan.
3) . Rubah Bilangan
Desimal ke Biner
87 = 1010111
73 = 1001001
94 = 1011110
47 = 101111
Biner ke Hexsadesimal
101001 = 29
10110 = 16
1110011 = 73
001100 = c
11011100 = dc
Hexsadesimal ke Biner
5F = 1011111
E7 = 10111110
89 = 10001001
A4 = 10100100
55 = 1010101
27 = 100111
D9 = 11011001
EF = 11101111
CA = 11001010
Nama : Faiz Firmansyah
NIM : 13170370
Dosen : Dany Pratmanto M.KOM


Komentar
Posting Komentar