Situasi Saat Program Berjalan (Run-time Environment) Kuliah 13 Situasi Saat Program Berjalan (Run-time Environment) run time environtment
Situasi Saat Program Berjalan (Run-time Environment) Masalah-masalah bahasa sumber. Susunan storage. Teknik-teknik alokasi storage. Akses terhadap nama non lokal. Pengiriman parameter (parameter passing). run time environtment
Masalah-masalah Bahasa Sumber Suatu definisi prosedur suatu deklarasi yang menghubungkan suatu identifier dengan suatu statement. Identifier tersebut merupakan nama prosedur dan statementnya merupakan badan prosedur. Lihat Contoh code: baris 3-7 merupakan definisi suatu prosedur yang bernama readarray; badannya pada baris 5-7. run time environtment
Masalah-masalah Bahasa Sumber Fungsi prosedur yang menghasilkan nilai. Prosedur dikatakan dipanggil (called) jika ia muncul pada statement yang dapat dieksekusi. Pemanggilan dilakukan dengan mengeksekusi badan prosedur yang dipanggil. Beberapa id pada definisi prosedur bersifat spesial dan disebut parameter formal (formal) suatu prosedur. run time environtment
Masalah-masalah Bahasa Sumber Argumen (parameter aktual) dapat dikirimkan ke prosedur yang dipanggil. Aktual ini akan menggantikan formal di dalam prosedur. Contoh: m dan n pada baris 12 adalah formal; i + 1 dan n pada baris 18 adalah aktual. run time environtment
Pohon Aktivasi Jalannya kendali di antara beberapa prosedur pada saat program dieksekusi: Kendali (kontrol) berjalan secara sekuensial; maksudnya eksekusi suatu program terdiri dari sebarisan langkah, pada setiap langkah kendali berada pada titik tertentu dalam program. Masing-masing eksekusi suatu prosedur dimulai pada awal badan prosedur dan akhirnya mengembalikan kendali pada suatu tempat tepat setelah prosedur itu dipanggil. run time environtment
Pohon Aktivasi Eksekusi suatu badan prosedur sering juga disebut sebagai aktivasi suatu prosedur. “Waktu hidup (lifetime)” suatu aktivasi prosedur p adalah sebarisan langkah-langkah antara langkah pertama dan terakhir, termasuk langkah yang dibutuhkan pada prosedur yang dipanggil. run time environtment
Pohon Aktivasi Jika A dan B adalah prosedur aktivasi, maka waktu hidupnya akan tidak saling tindih (non-over lapping) atau nested (jika B dimasuki sebelum A ditinggalkan, maka kendali harus meninggalkan B sebelum meninggalkan A). Untuk melihat bagaimana sifat nested bekerja, sisipkan statement print 'masuk' pada awal badan prosedur, dan 'keluar' pada akhir badan prosedur. run time environtment
Situasi Saat Program Berjalan (Run-time Environment) ...... keluar quicksort(5, 9) keluar quicksort(1, 9) Eksekusi selesai Eksekusi mulai... masuk readarray masuk quicksort(1, 9) masuk partition(1, 9) keluar partition(1, 9) masuk quicksort(1, 3) ...... keluar quicksort(1, 3) masuk quicksort(5, 9) run time environtment
Situasi Saat Program Berjalan (Run-time Environment) Suatu prosedur dikatakan rekursif, jika suatu aktivasi yang baru dapat dimulai sebelum aktivasi prosedur tersebut berakhir. run time environtment
Pohon Aktivasi Pohon aktivasi dapat menggambarkan keluar dan masuknya kendali dari aktivasi suatu prosedur. Masing-masing node merepresentasikan suatu aktivasi prosedur. root merepresentasikan aktvasi program utamanya. run time environtment
Pohon Aktivasi Node A adalah parent dari node B jika dan hanya jika kendali bergerak dari aktivasi A ke aktivasi B. Node A berada di sebelah kiri node B jika dan hanya jika waktu hidup A terjadi sebelum waktu hidup B. run time environtment
Pohon Aktivasi (contoh) Eksekusi dilakukan secara depth-first traversal. run time environtment
Pemakaian stack pada aktivasi prosedur Node di-push ke dalam stack pada saat aktivasinya dimulai, dan di-pop jika aktivasinya berakhir. run time environtment
Pemakaian stack pada aktivasi prosedur (contoh) run time environtment
Jangkauan (scope) deklarasi/blok Bagian dari suatu program yang memakai suatu deklarasi tertentu. Contoh: var i pada program sort tidak berhubungan satu sama lain. Suatu nama di dalam prosedur disebut LOKAL jika dideklarasikan pada prosedur itu. Selain itu disebut NON-LOKAL. run time environtment
Pengikatan (binding) nama-nama state environtment nilai nama storage run time environtment
Pengikatan (binding) nama-nama Environment memetakan nama ke storage. State memetakan storage ke isinya (nilainya). Jika suatu environment mengkaitkan lokasi storage S dengan suatu nama X, maka dikatakan X diikat pada (bound to) S. Proses ini disebut juga dengan binding. run time environtment
Organisasi / Susunan Storage Tergantung pada jawaban: Bolehkah suatu prosedur rekursif? Apa yang terjadi dengan nilai-nilai lokal sewaktu kendali kembali dari suatu aktivasi prosedur? Bolehkah suatu prosedur memakai nama non-lokal? Bagaimana cara parameter dikirimkan sewaktu prosedur dipanggil? run time environtment
Organisasi / Susunan Storage (cont.) Bolehkah suatu prosedur dikirim sebagai parameter? Bolehkah prosedur dikembalikan sebagai hasil? Bolehkah storage dialokasikan secara dinamik? Haruskah storage di-dealokasikan secara eksplisit? run time environtment
Organisasi / Susunan Storage (cont.) Storage dipakai untuk menyimpan: Kode target yang terbentuk Objek data Informasi tentang aktivasi prosedur run time environtment
Organisasi / Susunan Storage (cont.) Kode target – sudah tertentu, dibentuk pada waktu kompilasi Objek data – besarnya sudah tertentu Sewaktu prosedur dipanggil: nilai counter program dan register mesin disimpan dalam stack. run time environtment
Organisasi / Susunan Storage (cont.) Dalam implementasi, aktivasi bisa ditempatkan pada stack ataupun heap. run time environtment
Organisasi / Susunan Storage (cont.) Informasi yang diperlukan oleh eksekusi suatu prosedur disimpan pada blok yang bersambungan. Blok ini disebut record aktivasi atau frame dan terdiri dari beberapa field. run time environtment
Organisasi / Susunan Storage (cont.) run time environtment
Organisasi / Susunan Storage (cont.) Tujuan record aktivasi: Menyimpan nilai sementara (hasil evaluasi ekspresi) Menyimpan data lokal prosedur Menyimpan status mesin sebelum pemanggilan prosedur Menyimpan pointer data non-lokal milik aktivasi lain run time environtment
Organisasi / Susunan Storage (cont.) Menyimpan pointer yang menunjuk record aktivasi pemanggil Menyimpan parameter aktual yang dipakai oleh prosedur pemanggilan untuk mensuplai parameter ke prosedur terpanggil Menyimpan nilai (jika prosedur adalah fungsi) run time environtment
Organisasi / Susunan Storage (cont.) Besarnya field-field tadi ditentukan pada waktu kompilasi, kecuali array dinamik, yang hanya bisa ditentukan pada saat program berjalan. run time environtment
Data lokal pada kompilasi bit byte word. (byte: unit terkecil memori – biasanya = 8 bit) Besarnya data lokal ditentukan berdasarkan tipenya: type dasar: char, integer, real, biasanya membutuhkan beberapa byte. pembentuk type: membutuhkan banyak byte untuk menyimpan semua komponennya. run time environtment
Data lokal pada kompilasi (cont.) Field data lokal ditentukan pada waktu kompilasi, kecuali variable-length data disimpan di luar field data. Alamat relatif / offset: alamat sebenarnya dalam memori – awal objek data. run time environtment
Contoh code programsort (input, output); var a: array [0..10] of integer; procedure readarray; var i: integer begin for i:= 1 to 9 do read (a[i]) end; function partition (y, z: integer) : integer; var i, j, x, v : integer; run time environtment
Contoh code (cont) begin... end procedure quicksort(m, n, integer); var i: integer; begin if (n > m) then begin i := partition(m, n); quicksort(m, i – 1); quicksort(i + 1, n); run time environtment
Contoh code end; begin a[0] := -9999; a[10] := 9999; readarray; quicksort(1, 9); end. run time environtment