Perbedaan Antara Mesin Tergantung dan Optimalisasi Kode Independen Mesin

Perbedaan Antara Mesin Tergantung dan Optimalisasi Kode Independen Mesin

Perbedaan Utama - Mesin Dependen vs Mesin Optimasi kode independen
 

Program komputer adalah set instruksi yang diberikan kepada perangkat keras, untuk melakukan tugas. Program-program ini sebagian besar ditulis dalam bahasa tingkat tinggi, dan komputer tidak mengerti bahasa itu. Oleh karena itu, kompiler digunakan untuk mengubah instruksi tersebut menjadi kode mesin atau kode target. Itu melewati beberapa fase untuk membangun kode target. Optimalisasi kode adalah salah satunya. Ada dua teknik optimasi seperti, dependen mesin dan optimasi kode independen mesin. Itu perbedaan utama Antara dependen mesin dan optimasi kode independen mesin adalah bahwa Optimalisasi yang bergantung pada mesin diterapkan pada kode objek sementara optimasi kode independen mesin diterapkan pada kode perantara.

ISI

1. Ikhtisar dan Perbedaan Utama
2. Apa optimalisasi kode dependen mesin
3. Apa optimalisasi kode independen mesin
4. Kesamaan antara dependen mesin dan optimasi kode independen mesin
5. Perbandingan Berdampingan - Optimalisasi Kode Independen Mesin Dependent VS dalam bentuk tabel
6. Ringkasan

Apa optimalisasi kode dependen mesin?

Saat mengonversi kode sumber ke kode objek atau kode target, kompiler melewati beberapa fase. Pertama, kode sumber diberikan kepada penganalisa leksikal yang menghasilkan token. Kemudian, output diberikan untuk Sintaks Analyzer yang menyelidiki apakah token yang dihasilkan berada dalam urutan logis. Output itu diberikan kepada penganalisa semantik. Asumsikan bahwa ada sepotong kode sebagai p = q + r;

Di sini, p, q adalah bilangan bulat, tetapi r adalah float. Menggunakan penganalisa semantik, variabel integer C dikonversi menjadi float. Oleh karena itu, ia menganalisis semantik. Output dari penganalisa semantik pergi ke generator kode menengah. Itu mengembalikan kode perantara yang kemudian masuk ke pengoptimal kode. Optimalisasi kode adalah proses menghilangkan pernyataan program yang tidak penting tanpa mengubah arti kode sumber aktual. Ini bukan pengoptimalan wajib tetapi, dapat meningkatkan waktu berjalan dari kode target. Output dari pengoptimal kode diberikan kepada generator kode, dan akhirnya, kode target dibangun.

Gambar 01: Fase kompiler

Dalam optimasi kode dependen mesin, optimasi diterapkan pada kode sumber. Mengalokasikan jumlah sumber daya yang cukup dapat meningkatkan pelaksanaan program dalam optimasi ini.

Apa optimalisasi kode independen mesin?

Saat optimasi dilakukan pada kode perantara, itu disebut optimasi kode independen mesin. Ada berbagai teknik untuk mencapai optimasi kode independen mesin. Mereka dijelaskan menggunakan contoh berikut.

Baca baris kode di bawah.

untuk (j = 0; j<10; j ++)

b = x+2;

a [j] = 5* j;

Menurut kode di atas, b = x+2 dihitung lagi dan lagi di setiap iterasi. Setelah B dihitung, itu tidak berubah. Jadi, baris ini dapat ditempatkan di luar loop sebagai berikut.

b = x+2;

untuk (j = 0; j< 10; j++)

a [j] = 5 * j;

Ini disebut Gerakan Kode.

Baca baris kode di bawah.

j = 5;

if (j == 10)

A = B+20;

Menurut kode di atas, 'jika blok' tidak akan pernah dieksekusi karena nilai j tidak akan pernah sama dengan 10. Itu sudah diinisialisasi ke nilai 5. Oleh karena itu, ini jika blok dapat dihapus. Teknik ini adalah eliminasi kode mati.

Metode lain adalah pengurangan kekuatan. Operasi aritmatika seperti perkalian membutuhkan lebih banyak siklus memori, waktu, dan CPU. Ekspresi mahal ini dapat diganti dengan ekspresi murah seperti b = a * 2; atau dapat diganti dengan penambahan, b = a + a;

Rujuk kode di bawah ini.

untuk (j = 1; j <= 5; j ++)

nilai = j * 5;

Alih -alih perkalian, kode dapat diubah sebagai berikut.

int temp = 5;

untuk (j = 1; j<=5; j++)

temp = temp + 5;

nilai = temp;

Dimungkinkan untuk mengevaluasi ekspresi yang merupakan konstanta saat runtime. Itu disebut lipatan konstan. Dapat dinyatakan seperti b [j+1] = c [j+1];

Sebaliknya, itu bisa diubah sebagai berikut.

n = j +1;

b [n] = c [n];

Mungkin ada loop sebagai berikut.

untuk (j = 0; j<5; j++)

printf (“a \ n”);

untuk (j = 0; j <5; j++)

printf (“b \ n”);

Mencetak A dan B, keduanya memiliki jumlah iterasi yang sama. Keduanya dapat digabungkan menjadi satu untuk loop sebagai berikut.

untuk (j = 0; j <5; j++)

printf (“a \ n”);

printf (“b \ n”);

Teknik penting lainnya adalah Eliminasi sub -ekspresi umum. Itu untuk menggantikan ekspresi identik dengan variabel tunggal untuk melakukan perhitungan. Rujuk kode Bellow.

A = B*C + K;

D = B* C + M;

Kode ini dapat dikonversi sebagai berikut.

temp = b*c;

a = temp + k;

d = temp + m;

Tidak diperlukan untuk menghitung b*c lagi dan lagi. Nilai berlipat ganda dapat disimpan dalam variabel dan digunakan kembali.

Apa kesamaan antara dependen mesin dan optimasi kode independen mesin?

  • Keduanya termasuk dalam optimasi kode

Apa perbedaan antara pengoptimalan kode independen mesin dan mesin?

Optimalisasi Kode Independen Mesin Dependent Vs 

Optimalisasi kode dependen mesin diterapkan pada kode objek. Optimalisasi kode mesin-independen diterapkan pada kode perantara.
Keterlibatan dengan perangkat keras
Optimalisasi yang bergantung pada mesin melibatkan register CPU dan referensi memori absolut.  Optimalisasi kode independen mesin tidak melibatkan register CPU atau referensi memori absolut.

Ringkasan -Mesin Optimalisasi kode independen dependen vs mesin 

Optimalisasi kode terdiri dari dua teknik optimasi yaitu, dependen mesin dan optimasi kode independen mesin. Perbedaan antara dependen mesin dan optimasi kode independen mesin adalah bahwa optimasi yang bergantung pada mesin diterapkan pada kode objek sedangkan, optimasi kode independen mesin diterapkan pada kode perantara.

Unduh Versi PDF dari Machine Dependent Vs Machine Optimalisasi Kode Independen

Anda dapat mengunduh versi PDF artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Harap unduh versi pdf di sini perbedaan antara mesin tergantung dan optimasi kode independen mesin

Referensi:

1.“Desain Kompiler | Optimasi kode.”GeeksForgeeks. Tersedia disini
2.Poin, tutorial. “Desain Kompiler - Optimalisasi Kode.”WWW.TutorialSpoint.com, Tutorials Point, 15 Agustus. 2017. Tersedia disini  
3.Estudies4you. “Bahan studi jntuh cse.Perbedaan antara pengoptimalan kode yang bergantung dan independen. Tersedia disini  

Gambar milik:

1.'Compiler' oleh I, Surachit, (CC BY-SA 3.0) Via Commons Wikimedia