Language of the Computer

Logical Operations














by Kerrlyn
_______________________________________________________________________________________________

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


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


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.

  1. Kawalan atas perkakasan sumber dilakukan terutamanya kawalan atas pemilihan dan operasi input / output dan storan peranti (storage devices). 
  2. Keseluruhan sistem komputer disegerakkan dimana hampir semua kerja dijalankan secara serentak. 
  3. Melindungi perkakasan, perisian dan data daripada penggunaan yang tidak betul. 
  4. Panggilan ke dalam memori utama, program dan subrutin berlaku apabila diperlukan.  
  5. Kawalan dari satu tugasan (program) ke satu tugasan yang lain di bawah satu sistem prioriti apabila lebih daripada satu aplikasi program menduduki memori utama. 
  6. Di sini, peruntukan kesilapan dan pembetulan rutin berlaku. 
  7. Rekod lengkap dibentukkan bagi apa yang serdang berlaku semasa pemprosesan (biasanya dalam bentuk log bercetak). 
  8. 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

No comments:

Post a Comment