_______________________________________________________________________________________________
Branch, Jump and Target Addressing
Branch Addressing
- Arahan branch termasuk:
1. Ditentukan dengan opcode,
dua registers iaitu rs dan rt, dan target addressing.
2. Tidak memerlukan capaian memori.
3. Tidak memerlukan register
write.
4. Immediate field adalah 16 bits tetapi
32 bits diperlukan.
5. Bne $t1, $t2, Label Arahan seterusnya di Label jika $t1= $t2
6. Beq $t1, $t2, Label Arahan seterusnya di Label jika $t1= $t2
- Arahan branch termasuk:
Op
|
Rs
|
Rt
|
immediate
|
6
bits 5 bits 5 bits 16 bits
(I
FORMAT)
- PC-relative addressing
o
Biasanya digunakan dalam
conditional branch.
o
PC(Program Counter) menyimpan
address untuk arahan seterusnya yang
akan dijemput.
o
Offset value boleh
merupakan satu immediate value atau
satu interpreted label value.
o
Effective address = Program Counter + offset value dalam arahan.
§ Effective address menentukan branch
target
o
Dalam branch, new PC = PC + immediate field dalam branch instruction
o
Sebenarnya, new PC =
(PC + 4) + immediate field dalam branch instruction.
40000 Loop: mult $9, $17, $8
40004 lw $8, $start($9)
40008 bne $8, $19, Exit
40012 add $17, $17, $18
40016 j Loop
40020 Exit:
5
|
8
|
21
|
2
|
Op rs rt address
(I
format)
Jump Addressing
- Jump (j dan jal) targets boleh berada di mana-mana sahaja dalam segmen teks.
- Immediate field adalah 16 bits tetapi 32 bits diperlukan.
Op
|
address
|
6 bits 26
bits
Anggapkan jump address adalah satu word
address
26 + 2 (least significant bits) =
28
Ambil 4 bits yang paling penting dari PC
Ø 4 + 26 + 2 = 32
Ø Kesan: hanya boleh lompat antara satu 228 = 256 MB
blok address.
Ø
Loader dan linker mesti digunakan secara
berhati-hati supaya dapat mengelakkan daripada meletak satu program ke seluruh
256 MB address boundary.
- Pseudo-direct addressing:
Ø Khususnya digunakan dalam arahan J-type,iaitu
j dan jal.
Ø Format arahan adalah 6 bits opcode dan 26 bits untuk immediate value(target).
Ø Dikira dengan 4 bits yang teratas dalam Program Counter (PC),disatukan ke dalam 26 bits immediate value, dan 2 bits yang rendah
adalah 00.
Ø Oleh itu, satu address baru yang berkesan telah
diciptakan. Oleh sebab 4 bits yang teratas dalam pc telahpun digunakan, jump
target akan pergi mana-mana 256MB code
block yang terkini(1/16 daripada jumlah 4GB address space.)
Ø Untuk melompat ke mana-mana
dalam 4GB space, arahan r-type termasuk jr dan jalr digunakan, di mana 32-bit target address yang sempurna
telah dinyatakan di dalam register.
Target address = PC31….28: (address *4)
Target Addressing
Contoh:
- Kod loop
Ø Andaikan loop adalah
di lokasi 60000
Loop: sll $t5, $s6, 2
|
|||||||
add $t5, $t5, $s9
|
|||||||
lw $t0, 0($t5)
|
|||||||
bne $t0, $s8, Exit
|
|||||||
addi $s6, $s6, 1
|
|||||||
j
Loop
|
|||||||
Exit: …
|
|||||||
60000
|
0
|
0
|
19
|
9
|
4
|
0
|
|
60004
|
0
|
9
|
22
|
9
|
0
|
32
|
|
60008
|
35
|
9
|
8
|
0
|
|||
60012
|
5
|
8
|
21
|
2
|
|||
60016
|
8
|
19
|
19
|
1
|
|||
60020
|
2
|
20000
|
|||||
60024
|
by Fong
_______________________________________________________________________________________________
Arithmetic, Register and Memory Operand
-Semua arithmetic
operasi dalam MIPS guna R-type format arahan untuk melaksanakan operasi mereka.
~Terdapat tiga
cara menyatakan constant dalam program MIPS:
1.
Pertama
adalah simpan dalam memory dan load
2.
Kedua adalah
guna register $0 yang load constant kosong.
3.
Ketiga
adalah guna immediate nilai.
Penambahan dan penolakan operasi
-Tambah a,b,c #a
dapat b+c(semua arithmetic ada form ini)
-tanda dolar($)
maksud a register
-Kita guna
$s0,$s1,…untuk registers yang sesuai kepada pembolehubah di C dan Java program
dan $t0,$t1,…untuk temporary registers perlu untuk compile program ke MIPS
arahan.
Contoh 1:
~C code:
f=g+h+i+j
~Compiled MIPS
kod:
tambah
$t0,g,h #maksud adalah jumlah g dan h
simpan di $t0
tambah $t1,i,j #maksud adalah jumlah $t0,idan j simpan di
$t1
tambah
$t2,$t0,$t1 #maksud jumlah $t0 dan $t1
simpan di $t2
Contoh 2:
~C code:
f=(e-g)+(h+5)
~Compiled MIPS
kod:
tolak $t0,e,g #buat yang
kurungan dahulu dan nilai e tolak g simpan di $t0
tambah $t1,h,5 #jumlah h tambah 5 simpan di $t1
tambah $t2,$t0,$t1 #maksud $t2(f)=$t0(e-g)+$t1(h+5)
Memory Operands
-Memory utama yang
digunakan untuk data komposit seperti arrays,structures(arrays dan structures
boleh mengandungi banyak unsur-unsur data berbanding dengan register di dalam
computer)
-Komputer memory
mempunyai juta unsur-unsur data,oleh itu,arrays dan structures simpan di dalam
memory.
-Memory is byte
addressed.Setiap address mengenal pasti satu 8-bit byte.
-Words adalah sejajar
dalam memory,address mesti multiple daripada 4.
-Untuk buat
arithmetic operasi,pertama load nilai dari memory ke dalam registers,kedua
simpan keputusan dari register ke memory.
Contoh 1 memory
operands:
~C code:
f = g + h + B[4];
(f dalam $s0,g dalam $s1,h dalam $s2,base address of B dalam $s3)
~Compiled MIPS
code
Indeks 4 memerlukan
mengimbangi daripada 16(4 bytes untuk satu word)
lw
$t0,16($s3) #lw=load word
tambah
$t1,$s1,$s2 #maksud $t1=$s1+$s2
tambah
$s0,$t1,$t0 #maksud $s0=$t1+$t0
Contoh 2 memory
operands:
~C code:
A[5] = g – B[4];
(g dalam $s0,base address of A dalam $s2,base address of B dalam $s3)
lw $t0,16($s3)
tolak $t1,$s2,$t0
sw $t2,20($s2) #sw=store word
by Jian Tung
_______________________________________________________________________________________________
R & I format
R-format(Register addressing)
Arahan MIPS R-format
op
rs
rt
rd
sa
funct
6 bits 5bits 5bits 5bits 5bits 6bits
Arahan:
*op:kod operasi(opcode 000000)
*rs:pendaftaran nombor untuk sumber
pertama
*rt:pendaftaran nombor untuk sumber kedua
*rd:destinasi pendaftaran nombor
*sa:pengalihan jumlah(00000)
*funct:kod fungsi(pemanjangan kod
operasi)
o Panjang arahan R-format adalah 32bit.
o Pemprosesan utama tidak memerlukan alamat sasaran,immediate value,atau anjakan cawangan
apabila menggunakan R-format.
o Format ini mempunyai bidang untuk menyatakan 3 pendaftaran dan 1
pengalihan jumlah.
o Arahan yang tidak menggunakan semua bidang,bidang yang tidak
digunakan akan dikodkan dengan semua 0 bits.
o Kod operasi untuk R-format ialah 000000.
o R-format termasuk aritmetik dan logik bersama dengan semua kendalian
di dalam pendaftaran,pengalihan jumlah,dan pendaftaran direct jump instructions(jal dan jr).
o R-type adalah untuk pendaftaran.
Jadual yang menunjukkan arahan dan
fungsi:
Contoh:
add $t0,$t1,$t2(add $rd, $rs, $rt)
rd=$t0
rs=$t1
rt=$t2
special
$t1
$t2
$t0
0
add
0
9
10
8
0
32
000000
01001
01010
01000
00000
100000
(Row
yang terakhir dikira dengan menggunakan cara penukaran nombor perpuluhan ke sistem
angka asas dua.Anda dapat merujuk daripada:
ü $zero :value 0 (reg 0)
ü $v0, $v1: result values (reg’s 2 and 3)
ü $a0 – $a3: arguments (reg’s 4 – 7)
ü $t0 – $t7: temporaries (reg 8-15)
ü $s0 – $s7: saved (reg 16-23)
ü $t8 – $t9: temporaries (reg 24-25)
ü $gp: global pointer for static data (reg 28)
ü $sp: stack pointer (reg 29)
ü $fp: frame pointer (reg 30)
ü $ra: return address (reg 31)
Ambil Nombor perpuluhan 9 menjadi system
asas dua 01001 sebagai contoh:
)
Contoh(penukaran nombor perenambelasan ke sistem angka asas dua):
bad9880116
adalah 1011 1010 1101 1001 1000 1000 0000 00012
caranya adalah merujuk jadual yang
berikut:
I-format(Immediate addressing)
Arahan MIPS I-format
Op
rs
Rt
constant atau address(immediate)
6 bits 5 bits 5 bits 16 bits
Arahan:
*Rt: destinasi atau sumber pendaftaran
nombor
*constant: –215 to +215
– 1
*address:offset ditambah ke base address yang di dalam rs
Prinsip reka
bentuk:reka bentuk yang baik meminta kompromis yang baik
-Format yang
tidak sama akan menyebabkan penyahkodan menjadi rumit,tetapi membenarkan 32-bit
arahan seragam
-jika
boleh,mengekalkan format yang serupa
ü Kumpulan ini termasuk arahan dengan 1 immediate operand,arahan cawangan,dan
muat dan simpan arahan.
ü Di dalam seni bina MIPS,semua akses memori dikendalikan oleh unit
pemprosesan yang utama,oleh itu,coprocessor
muat dan simpan arahan adalah termasuk dalam kumpulan ini.I-format
digunakan untuk arahan transaksi data.
ü Semua opcodekecuali
000000,00001x,dan 0100xx adalah digunakan untuk arahan I-format.
ü Operand adalah malar dalam arahan yang mengekod .Arahan dapat dilaksanakan
lebih cepat kerana ini tidak melibatkan akses memori.Saiz operand adalah terhad,iaitu 16 bits.
ü J-format adalah dalam immediate
addressing,destinasi dipegang dalam arahan.
Jadual yang menunjukkan arahan dan opcode notes:
Contoh:
addi $t2,$t2,2(addi $rs,$rt,immediate value)
rd=$t2
rt=$t2
constant atau address (immediate)=2
001000
01010
01010
0000000000000010
(Row
yang terakhir dikira dengan menggunakan cara penukaran nombor perpuluhan ke sistem
asas dua.Anda dapat merujuk daripada:
ü $zero :value 0 (reg 0)
ü $v0, $v1: result values (reg’s 2 and 3)
ü $a0 – $a3: arguments (reg’s 4 – 7)
ü $t0 – $t7: temporaries (reg 8-15)
ü $s0 – $s7: saved (reg 16-23)
ü $t8 – $t9: temporaries (reg 24-25)
ü $gp: global pointer for static data (reg 28)
ü $sp: stack pointer (reg 29)
ü $fp: frame pointer (reg 30)
ü $ra: return address (reg 31)
Cara penukaran
nombor perpuluhan ke sistem angka asas dua seterusnya adalah sama dengan
R-format.)
by Wan Bing
_______________________________________________________________________________
Translation and Startup
op
rs
rt
rd
sa
funct
special
$t1
$t2
$t0
0
add
0
9
10
8
0
32
000000
01001
01010
01000
00000
100000

bad9880116
adalah 1011 1010 1101 1001 1000 1000 0000 00012
I-format(Immediate addressing)
Op
rs
Rt
constant atau address(immediate)
001000
01010
01010
0000000000000010
Penterjemah (Translation)
Kami telah membincangkan bagaimana program berjalan. Setiap
program melaksanakan sebagai aliran bait (bytes)
mengikut arahan yang ada dalam bahasa mesin (machine language) komputer anda. Tetapi manusia tidak mampu
berkomunikasi dengan bahasa mesin dengan baik walaupun di kalangan penggodam.
Hampir semua kod Unix kecuali sedikit sokongan oleh muka
perkakasan langsung (direct
hardware-interface support) dalam kernel sendiri kini pun ditulis dalam
bahasa peringkat tinggi (High-level
Language). Istilah 'Peringkat tinggi' ini adalah bertujuan untuk membezakan
bahasa peringkat tinggi dari bahasa penghimpun 'peringkat rendah' (‘low-level’ assembly language).
Terdapat pelbagai
jenis bahasa peringkat tinggi. Ingatlah bahawa kod sumber (source code) program dicipta manusia dan versi boleh diedit perlu
melalui beberapa jenis terjemahan menjadi kod mesin (machine code) dimana mesin sebenarnya boleh menjalankan .
Seperti yang kita tahu, komputer mempunyai fungsi-fungsi
penterjemahan untuk menterjemahkan program yang ditulis dalam bahasa
pengaturcaraan yang diberikan kepada program yang berfungsi sama ke dalam
bahasa yang berbeza, misalnya C++ ke MIPS dan MIPS ke nombor binari.
Penterjemah
(Translator)
(High-level
Language) →(High-level Language)
Penterjemah yang menterjemahkan bahasa peringkat tinggi (High-level Language) ke dalam bahasa
peringkat tinggi (High-level Language)
yang lain, ia dipanggil penterjemah (translator).
CONTOH
FORTRAN-to-have penterjemah, CHILL-C + + penterjemah,
penterjemah PASCAL ke-C, COBOL (DialectA)-ke-COBOL (DialectB) penterjemah.
Pengkompil
(Compiler)
(High-level
Language) → (assembly language) / (machine
language)
Penterjemah yang menterjemahkan bahasa peringkat tinggi (High-level Language) ke dalam bahasa
perhimpunan atau mesin (assembly or
machine language) ia dipanggil pengkompil
(compiler).
Setiap bahasa sama ada boleh diterjemahkan ke (Turing-lengkap)
tahap tinggi (high-level) atau bahasa
himpunan (assembly language).
Jurubahasa (interpreter)
(High-level
Language) →(intermediate code)
Penterjemah yang menterjemahkan bahasa peringkat tinggi (High-level Language) kepada kod
perantaraan (intermediate code) yang
akan dilaksanakan segera ia dipanggil jurubahasa
(interpreter).
Decompiler
(Decompiler)
(machine language)
→(source language)
Penterjemah yang menterjemahkan bahasa mesin (machine language) kepada bahasa sumber (source language) ia dipanggil decompiler (decompiler).
CONTOH
DCC, Boomerang Decompilers dan Pengkompil reverse Engineering (REC).
Penghimpun
(assembler)
(assembly
language) →(machine code)
Penterjemah yang menterjemahkan bahasa himpunan (assembly language) kepada kod mesin (machine code) itu berjenis penterjemah
dipanggil penghimpun (assembler).
CONTOH
MASM, TASM, NASM dan FASM.
Disassembler
(disassembler)
(machine code) → (assembly
language)
Penterjemah yang menterjemahkan kod mesin (machine code) kepada bahasa himpunan (assembly language) berjenis penterjemah
dipanggil disassembler (disassembler).
CONTOH
Pra-Pemasangan, IDA Pro dan OllyDbg.
But (Startup)
Penjadualan (scheduling),
beratur (queuing) dan pemunggahan program
(loading of programs), atau
subprograms, untuk menyediakan pemprosesan secara berterusan megikut urutan,
atau untuk memberikan respons yang sesuai untuk acara.
- Kawalan atas perkakasan sumber dilakukan terutamanya
kawalan atas pemilihan dan operasi input / output dan storan peranti (storage devices).
- Keseluruhan sistem komputer disegerakkan dimana
hampir semua kerja dijalankan secara serentak.
- Melindungi perkakasan, perisian dan data
daripada penggunaan yang tidak betul.
- Panggilan ke dalam memori utama, program dan
subrutin berlaku apabila diperlukan.
- Kawalan dari satu tugasan (program) ke satu
tugasan yang lain di bawah satu sistem prioriti apabila lebih daripada satu
aplikasi program menduduki memori utama.
- Di sini, peruntukan kesilapan dan pembetulan
rutin berlaku.
- Rekod lengkap dibentukkan bagi apa yang serdang berlaku
semasa pemprosesan (biasanya dalam bentuk log bercetak).
- Biasanya, cara konsol digunakan untuk berkomunikasi
dengan pengguna. Pengguna berkomunikasi dengan sistem operasi melalui JOB CONTROL LANGUAGE (JCL), yang
diterjemahkan dan dilaksanakan oleh jurubahasa arahan interaktif (interactive command interpreter).
Apa itu JCL??
JOB CONTROL
LANGUAGE (JCL)
Merupakan satu bahasa yang digunakan untuk berkomunikasi
dengan sistem operasi komputer bagi mengenal pasti suatu pekerjaan menggambarkan
keperluannya. Ia dalam bentuk bahasa skrip yang digunakan pada sistem operasi kerangka
utama IBM.
by CSY
by CSY
No comments:
Post a Comment