ANALISIS DAN PERANCANGAN PERANGKAT LUNAK
3.1 Analisis Bahasa Fortran
3.1.2 Konstanta pada Fortran
Konstanta merupakan nilai data yang tidak dapat diubah selama eksekusi program, konstanta pada Fortran dapat berupa konstanta bilangan bulat, konstanta bilangan pecahan, dan konstanta untai karakter.
Konstanta bilangan bulat pada Fortran, merupakan lexeme yang hanya mengandung karakter angka 0 sampai 9, tidak mengandung bagian pecahan. Konstanta bilangan bulat dapat dinyatakan dengan ekspresi reguler berikut.
{‘+’|’-‘|’’}{
‘0’|’1’|’2’|..|’9’} +
Konstanta bilangan bulat pada Fortran juga dapat berupa untai karakter dengan penanda basis diawal atau diakhir. Penanda basis pada Fortran ditunjukkan pada Tabel 3.2.
Tabel 3.2 Penanda Basis
Karakter Penanda Basis Basis
‘B’, ’b’ 2 (biner)
‘O’, ’o’ 8 (oktal)
‘X’, ’Z’, ’x’, ’z’ 16 (heksadesimal)
Konstanta bilangan bulat berupa untai karakter dengan karakter penanda basis dapat dinyatakan dengan ekspresi reguler berikut.
{‘+’|’-‘|’’}{ {‘B’|’b’}{‘”’}{‘0’|’1’}+{‘”’}| {‘B’|’b’}{‘’’ }{‘0’|’1’} +{‘’’}| {‘”’}{‘0’|’1’ } +}| {‘”’}{‘B’|’b’ {‘’’}{‘0’|’1’}+}| {‘’’}{‘B’|’b’ {‘O’|’o’}{‘”’}{‘0’|’1’|..|’7’}+{‘”’}| {‘O’| ’o’}{‘’’}{‘0’|’1’|..|’7’} +{‘’’}| {‘”’} {‘0’|’1’|..|’7’} +{‘”’}{‘O’|’o’}| {‘’’} {‘0’|’1’|..|’7’} +{‘’’}{‘O’|’o’}| {‘X’| ’Z’|’x’|’z’}{‘”’}{‘0’|..|’9’|’A’|..|’F’|’a’|..|’f’} +{‘”’} | {‘X’|’Z’|’x’| ’z’}{‘’’}{‘0’|..|’9’|’A’|..|’F’|’a’|..|’f’} +{‘’’} | {‘”’}{‘0’|..| ’9’|’A’|..|’F’|’a’|..|’f’} +’|’z’}{‘”’}{‘X’|’Z’|’x | {‘’’}{‘0’|..|’9’|’A’|..|’F’|’a’|..|’f’}+’|’z’}} {‘’’}{‘X’|’Z’|’x
Contoh konstanta bilangan bulat yang valid:
+123 12345 ‘12AB’x B‘01010’
Konstanta pecahan merupakan konstanta yang mengandung titik desimal, bagian pecahan, dan atau eksponen. Konstanta pecahan dapat dinyatakan dengan ekpresi reguler berikut.
{‘+’|’-‘|’’}{
{‘0’|..|’9’}* {‘.’}{‘0’|..|’9’} +’e’}{‘+’|’-‘|’’} {’D’|’E’|’d’| {‘0’|.. |’9’}+| {‘0’|..|’9’}+’9’}*| {‘.’}{‘0’|..| {‘0’|..|’9’}+’9’}*{’D’|’E’|’d’|’e’}{‘+’|’-‘|’’} {‘.’}{‘0’|..| {‘0’|.. |’9’}+}
Contoh konstanta bilangan pecahan yang valid:
123.45 -.123 123.E45
Konstanta untai karakter merupakan konstanta yang terdiri atas satu atau lebih karakter, yang dapat direpresentasikan oleh prosesor. Tiap karakter dalam konstanta untai karakter dinomori secara terurut dari 1. Konstanta untai karakter diawali dengan karakter ‘”’ atau ‘’’, dan diakhiri dengan karakter yang sama dengan karakter awal. Karakter yang mungkin dikandung pada konstanta untai karakter adalah semua karakter ASCII.
{‘”’}{#0..#25
5} +{‘”’}|
{‘’’}{#0..#25 5}+{‘’’}
Contoh konstanta untai karakter yang valid:
“abcdefghij klmnopq, r’stuvw. Xyz!” ‘1234’’!@#$’
3.1.3Fortran G77
G77 merupakan paket compiler Fortran 77 yang dikembangkan oleh GNU. Versi G77 yang digunakan adalah 2.95. Paket G77 terdiri atas wrapper (g77.exe), compiler (f771.exe), assembler (as.exe), dan linker (ld.exe).
Wrapper dipanggil dengan menyertakan parameter yang terdiri atas opsi wrapper, opsi compiler, opsi assembler, opsi linker, dan direktori kode sumber program. Daftar beberapa opsi wrapper ditampilkan pada Tabel 3.3. Ketika wrapper
dipanggil dengan suatu parameter yang sesuai, maka wrapper akan memanggil compiler terlebih dahulu untuk mengkompilasi kode sumber Fortran menjadi kode sumber rakitan. Apabila compiler tidak mengembalikan pesan kesalahan, maka wrapper akan memanggil assembler untuk menerjemahkan kode program rakitan menjadi kode objek. Apabila assembler juga tidak mengembalikan pesan kesalahan, maka berikutnya linker akan dipanggil. Linker akan menggabungkan kode objek hasil penerjemahan assembler dengan kode objek yang tersimpan pada pustaka (library) Fortran, untuk menghasilkan executable program apabila tidak terdapat kesalahan pada proses penggabungan (linking).
Tabel 3.3 Daftar Opsi Wrapper
Parameter Fungsi
--help Menampilkan dokumentasi bantuan (help) untuk g77. -dumpspecs Menampilkan semua string spesifikasi built-in. -dumpversion Menampilkan versi compiler.
-dumpmachine Menampilkan prosesor tujuan dari compiler. -Wa,<options> Melewatkan <options> kepada assembler. -Wp,<options> Melewatkan <options> kepada preprocessor. -Wl,<options> Melewatkan <options> kepada linker. -Xlinker <arg> Melewatkan <arg> kepada linker.
-save-temps Mempertahankan berkas assembler dan berkas objek. -v Menampilkan program yang dipanggil oleh g77.
-E Hanya melakukan praproses.
-S Hanya melakukan kompilasi.
-c Hanya melakukan kompilasi dan perakitan. -o <file> Menghasilkan keluaran pada <file>.
Proses penerjemahan kode sumber program Fortran menjadi executable program, juga dapat dilakukan secara manual tanpa menggunakan wrapper. Compiler mula-mula dipanggil dengan menyertakan parameter berupa opsi compiler dan direktori kode sumber program. Beberapa opsi compiler yang umum digunakan, ditampilkan pada Tabel 3.4. Apabila pemanggilan compiler berhasil (tidak mengembalikan pesan kesalahan), maka akan dihasilkan kode sumber rakitan. Selanjutnya, assembler dengan menyertakan parameter berupa opsi assembler dan direktori kode sumber rakitan. Beberapa opsi assembler yang umum digunakan, ditampilkan Tabel 3.5. Apabila pemanggilan assembler berhasil, maka akan dihasilkan kode objek dan proses dapat dilanjutkan dengan pemanggilan linker.
Parameter yang diberikan pada pemanggilan linker, terdiri atas opsi linker, direktori kode objek, dan daftar pustaka yang digunakan. Beberapa opsi linker yang umum digunakan, ditampilkan pada Tabel 3.6. Jika pemanggilan linker berhasil, maka akan dihasilkan executable yang siap untuk dijalankan.
Tabel 3.4 Daftar Opsi Compiler
Parameter Fungsi
-ffree-form Mengizinkan format program bebas.
-ff90 Menandakan program ditulis dengan dialek
Fortran 90.
-fdollar-ok Mengizinkan ‘$’ untuk digunakan sebagai nama
simbol.
-fno-backslash Memperlakukan ‘\’ sebagai karakter biasa. -fonetrip Menjalankan iteratif DO minimal sekali. -ffixed-line-len
gth-<n> Mengatur panjang maksimum baris menjadi <n>.
-fno-ugly Menolak semua struktur yang ‘buruk’.
-fugly-args Mengizinkan konstanta tidak bertipe dan
konstanta Hollerith dilewatkan sebagai argumen.
-fugly-assign Mengizinkan penugasan biasa terhadap variabel
yang ditugaskan dengan perintah ASSIGN.
-fugly-assumed Mengasumsikan dummy array menjadi array (1). -fugly-comma Menganggap koma pada akhir baris pemanggilan
prosedur sebagai penanda argumen null.
-fugly-complex Mengizinkan struktur kompleks yang buruk. -fugly-init Mengizinkan struktur inisialisasi yang buruk. -fugly-logint Mengizinkan INTEGER dan LOGICAL untuk
dipertukarkan.
-Os Mengoptimasi memory daripada kecepatan.
-ffast-math Meningkatkan kecepatan pemrosesan FP. -fkeep-inline-fu
nctions Mempertahankan kode fungsi walupun telah
tersedia fungsi baris.
-finline-functio
ns Mengintegrasikan fungsi sederhana pada
pemanggil.
-ffunction-cse Mengizinkan alamat fungsi ditempatkan pada
register.
-fgcse Menjalankan Global Common Subexpression
Elimination.
-frerun-cse-afte
r-loop Menjalankan CSE setelah optimisasi perulangan
(loop).
-frerun-loop-opt Menjalankan loop optimiser dua kali.
-msoft-float Menghindari penggunaan perangkat keras FP.
-m80837 Menggunakan perangkat keras FP.
-finit-local-zer
o Menginisialisasi variabel dan array lokal dengan
nilai 0.
Tabel 3.4 Daftar Opsi Compiler (Lanjutan)
Parameter Fungsi
-fcheck-memory-u
sage Memeriksa setiap pengaksesan memory.
-fstack-check Memeriksa stack.
-fverbose-asm Menghasilkan informasi tambahan.
-fxyzzy Menampilkan informasi internal terkait yang
dengan debugging.
-fdebug-kludge Menghasilkan informasi tambahan untuk COMMON
dan EQUIVALENCE .
-fbounds-check Memeriksa batasan subskrip dan substring. -fexceptions Mengizinkan penanganan eksepsi (exception). -fasynchronous-e
xceptions Mendukung eksepsi yang asinkron.
-fnew-exceptions Menggunakan penanganan eksepsi model baru.
-w Mengabaikan peringatan (warning).
-W Memungkinkan peringatan tambahan.
-Winline Memperingati fungsi baris yang tidak valid. -Wuninitialized Memperingati variabel yang tidak diinisialisasi. -Wunused Memperingati variabel yang tidak digunakan.
Tabel 3.5 Daftar Opsi Assembler
Parameter Fungsi
-W Mengabaikan peringatan (warning).
-Z Menghasilkan kode objek walaupun terdapat kesalahan. -o <file> Mengatur nama kode objek keluaran.
--statistics Menampilkan ukuran statistik dari eksekusi. --version Menampilkan versi assembler.
Tabel 3.6 Daftar Opsi Linker
Parameter Fungsi
--noinhibit-e
xec Menghasilkan keluaran walaupun ditemukan kesalahan. -l <libname> Mencari pustaka dengan nama ><libname .
-L <dir> Menambah <dir> ke dalam direktori pencarian pustaka. -o <file> Mengatur nama executable keluaran.
--version Menampilkan informasi versi linker.
--stats Menampilkan statistik penggunaan memory. --verbose Menghasilkan informasi lebih selama linking. --support-old