Perbezaan Antara Mesin Bergantung Dan Pengoptimuman Kod Bebas Mesin

Isi kandungan:

Perbezaan Antara Mesin Bergantung Dan Pengoptimuman Kod Bebas Mesin
Perbezaan Antara Mesin Bergantung Dan Pengoptimuman Kod Bebas Mesin

Video: Perbezaan Antara Mesin Bergantung Dan Pengoptimuman Kod Bebas Mesin

Video: Perbezaan Antara Mesin Bergantung Dan Pengoptimuman Kod Bebas Mesin
Video: Engine modifided | 3 cara delete atau VTEC killer K Series | @mekanikamalaysia 2024, November
Anonim

Perbezaan Utama - Mesin Bergantung vs Pengoptimuman Kod Bebas Mesin

Program komputer adalah sekumpulan arahan yang diberikan kepada perkakasan, untuk melaksanakan tugas. Program-program ini kebanyakannya ditulis dalam bahasa peringkat tinggi, dan komputer tidak memahami bahasa itu. Oleh itu, penyusun digunakan untuk menukar arahan tersebut menjadi kod mesin atau kod sasaran. Ia melalui beberapa fasa untuk membina kod sasaran. Pengoptimuman kod adalah salah satunya. Terdapat dua teknik pengoptimuman seperti, mesin bergantung dan pengoptimuman kod bebas mesin. Perbezaan utama antara pengoptimuman kod yang bergantung pada mesin dan bebas mesin adalah bahawa pengoptimuman yang bergantung pada mesin diterapkan pada kod objek sementara pengoptimuman kod bebas mesin diterapkan pada kod perantaraan.

KANDUNGAN

1. Gambaran Keseluruhan dan Perbezaan Utama

2. Apa itu Pengoptimuman Kod Bergantung pada Mesin

3. Apa itu Pengoptimuman Kod Bebas Mesin

4. Persamaan Antara Penggantungan Kod Mesin dan Mesin Bebas

5. Perbandingan Berdampingan - Pergantungan Mesin vs Pengoptimuman Kod Bebas Mesin dalam Bentuk Jadual

6. Ringkasan

Apakah Pengoptimuman Kod Bergantung pada Mesin?

Semasa menukar kod sumber ke kod objek atau kod sasaran, penyusun melalui beberapa fasa. Pertama, kod sumber diberikan kepada penganalisis Lexical yang menghasilkan token. Kemudian, output diberikan kepada penganalisis sintaks yang menyiasat sama ada token yang dihasilkan berada dalam urutan logik. Output itu diberikan kepada penganalisis semantik. Andaikan bahawa terdapat sekeping kod sebagai p = q + r;

Di sini, p, q adalah bilangan bulat, tetapi r adalah pelampung. Menggunakan penganalisis semantik, pemboleh ubah integer c ditukar menjadi apungan. Oleh itu, ia melakukan analisis semantik. Output penganalisis semantik pergi ke penjana kod Pertengahan. Ia mengembalikan kod perantaraan yang kemudian pergi ke pengoptimum kod. Pengoptimuman kod adalah proses menghilangkan penyataan program yang tidak penting tanpa mengubah makna kod sumber sebenarnya. Ini bukan pengoptimuman wajib, tetapi dapat meningkatkan masa berjalan kod sasaran. Keluaran pengoptimum kod diberikan kepada penjana kod, dan akhirnya, kod sasaran dibina.

Perbezaan Antara Mesin Bergantung dan Pengoptimuman Kod Bebas Mesin
Perbezaan Antara Mesin Bergantung dan Pengoptimuman Kod Bebas Mesin

Gambar 01: Fasa Penyusun

Dalam pengoptimuman kod bergantung mesin, pengoptimuman diterapkan pada kod sumber. Memperuntukkan jumlah sumber yang mencukupi dapat meningkatkan pelaksanaan program dalam pengoptimuman ini.

Apakah Pengoptimuman Kod Bebas Mesin?

Apabila pengoptimuman dilakukan pada kod perantaraan, ia disebut pengoptimuman kod bebas mesin. Terdapat teknik yang berbeza untuk mencapai pengoptimuman kod bebas mesin. Mereka dijelaskan menggunakan contoh berikut.

Baca baris kod berikut.

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

b = x + 2;

a [j] = 5 * j;

}

Menurut kod di atas, b = x + 2 dikira berulang kali dalam setiap lelaran. Setelah b dikira, ia tidak akan berubah. Jadi, garis ini boleh diletakkan di luar gelung seperti berikut.

b = x + 2;

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

{a [j] = 5 * j;

}

Ini dipanggil pergerakan kod.

Baca baris kod berikut.

j = 5;

jika (j == 10) {

a = b + 20;

}

Menurut kod di atas, 'if block' tidak akan pernah dapat dilaksanakan kerana nilai j tidak akan sama dengan 10. Ia sudah diinisialisasi dengan nilai 5. Oleh itu, ini jika blok dapat dikeluarkan. Teknik ini adalah penghapusan kod mati.

Kaedah lain adalah pengurangan kekuatan. Operasi aritmetik seperti pendaraban memerlukan lebih banyak memori, masa, dan kitaran CPU. Ungkapan mahal ini boleh digantikan dengan ungkapan murah seperti b = a * 2; atau boleh digantikan dengan penambahan, b = a + a;

Rujuk kod di bawah.

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

nilai = j * 5;

}

Daripada pendaraban, kodnya boleh diubah seperti berikut.

int temp = 5;

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

temp = temp + 5;

nilai = temp;

}

Adalah mungkin untuk menilai ungkapan yang merupakan pemalar pada waktu proses. Ia dipanggil lipatan berterusan. Ada yang boleh dinyatakan seperti b [j + 1] = c [j + 1];

Sebaliknya, ia boleh diubah seperti berikut.

n = j +1;

b [n] = c [n];

Terdapat gelung seperti berikut.

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

printf ("a / n");

}

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

printf ("b / n");

}

Mencetak a dan b, kedua-duanya mempunyai bilangan lelaran yang sama. Kedua-duanya boleh digabungkan menjadi satu untuk gelung seperti berikut.

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

printf ("a / n");

printf ("b / n");

}

Teknik penting lain adalah penghapusan sub ekspresi Umum. Ia adalah untuk mengganti ungkapan yang sama dengan satu pemboleh ubah untuk melakukan pengiraan. Rujuk kod berikut.

a = b * c + k;

d = b * c + m;

Kod ini boleh ditukar seperti berikut.

temp = b * c;

a = temp + k;

d = temp + m;

Tidak diperlukan untuk mengira b * c berulang-ulang kali. Nilai darab boleh disimpan dalam pemboleh ubah dan digunakan semula.

Apakah Kesamaan Antara Penggantungan Mesin dan Kod Bebas Mesin?

Kedua-duanya tergolong dalam pengoptimuman kod

Apakah Perbezaan Antara Mesin Bergantung dan Pengoptimuman Kod Bebas Mesin?

Artikel Diff Tengah sebelum Jadual

Mesin Bergantung vs Pengoptimuman Kod Bebas Mesin

Pengoptimuman kod bergantung mesin diterapkan pada kod objek. Pengoptimuman kod bebas mesin digunakan untuk kod perantaraan.
Penglibatan dengan Perkakasan
Pengoptimuman bergantung pada mesin melibatkan daftar CPU dan rujukan memori mutlak. Pengoptimuman kod bebas mesin tidak melibatkan daftar CPU atau rujukan memori mutlak.

Ringkasan - Mesin Bergantung vs Pengoptimuman Kod Bebas Mesin

Pengoptimuman kod terdiri daripada dua teknik pengoptimuman iaitu, mesin bergantung dan pengoptimuman kod bebas mesin. Perbezaan antara pengoptimuman kod bebas mesin dan mesin bebas adalah bahawa pengoptimuman bergantung pada mesin diterapkan pada kod objek sedangkan, pengoptimuman kod bebas mesin diterapkan pada kod perantaraan.

Muat turun Versi PDF Mesin Bergantung vs Pengoptimuman Kod Bebas Mesin

Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian seperti dalam catatan petikan. Sila muat turun versi PDF di sini Perbezaan Antara Mesin Bergantung dan Pengoptimuman Kod Bebas Mesin

Disyorkan: