Showing posts with label Topic 3: Language of Computer. Show all posts
Showing posts with label Topic 3: Language of Computer. Show all posts

Friday, 14 December 2012

3.4 Logical Operations

Apakah itu Logical Operations?
Arithmetic dan logical operations dilakukan dalam CPU oleh Arithmetic/Logical Unit (ALU). Logical instructions merupakan manipulasi bit berorientasikan data berdasarkan operasi logical operations AND, OR dan NOT.

Instructions untuk manipulasi bitwise :
Operation
C
Java
MIPS
Shift left
<< 
<< 
sll
Shift right
>> 
>>> 
srl
Bitwise AND
&
&
and, andi
Bitwise OR
|
|
or , ori
Bitwise NOT
~
~
nor



Shift Operations

Shift Operations membenarkan bit dipindahkan ke kiri atau kanan.

3 jenis Shift Operations:
• Logical
• Rotate
• Arithmetic.


Logical

Logical shift bergerak bit ke kiri atau kanan. Bit yang 'jatuh' akhir perkataan dibuang dan perkataan dipenuhi dengan 0's dari akhir bertentangan. 8 bit binari nombor 1000 1011 punya Logical right shift memberikan 0100 0101.





Rotate

Rotate operation adalah satu anjakan pekeliling di mana tiada bit dibuang. Rotate right nombor binari 8 bit 1000 1011 memberikan 1100 0101.





Arithmetic

Arithmetic right shift lebih kurang sama dengan logical right shift, kecuali bahawa bit terkiri dipenuhi dengan tanda bilangan asal, bukannya 0's.

8 bit nombor 1000 1011 punya Arithmetic right shift memberikan 1100 0101.





AND Operations

Bitwise AND mengambil dua perwakilan yang mempunyai panjang yang sama dan melakukan logical AND operation pada setiap pasangan bit yang sepadan. Hasil di setiap posisi adalah 1 jika bit pertama adalah 1 dan bit kedua adalah 1; yang lain, hasilnya adalah 0. Secara umumnya, hasil 1 akan ditunjukkan hanya masa kedua-dua bits menunjukkan 1.

Contoh:

           1010
AND 1100
  = 1000


OR Operations

Bitwise OR mengambil dua corak bit panjang yang sama dan melaksanakan logical inclusive OR operation pada setiap pasangan bit yang sepadan. Hasil pada setiap kedudukan adalah 1 jika bit pertama adalah 1 atau bit kedua adalah 1 atau kedua-dua bit 1; yang lain, hasilnya adalah 0.

Contoh:

        1001
OR 0101
 = 1101


NOT Operations

Cara Bitwise NOT diguna boleh dijelaskan dengan terbalikkan bits dalam perkataan, 0 -> 1 dan 1 -> 0.

Contoh:

NOT 0110
  = 1001

3.3 Jenis R, Jenis I & Jenis J

Format arahan kepada MIPS terdapat pelbagai jenis, antaranya ialah jenis R, jenis I dan jenis J. Format arahan menunjukkan bagaimana arahan-arahan di letak sama sekali.

Jenis R


           Semua R-type guna opcode 000000. 

       Contoh Jenis R:

      
       Sub $t1,$s0,$s1
       
       00000010000100010100100000100010₂ = 02114822₁₆ 

       Penjelasan:
                
             Dalam Green MIPS Sheet, kita dapat cari:
-       Function code kepada yang menunjukkan Sub ialah 34
-       Nombor register untuk $s0, $s1 dan $t1 . Sheet itu menunjukkan $t0-$t7 ialah 8-15 dan $s0-$s7 ialah 16-23.
-       Formula bagi sub ialah rd= rs –rt
-       Baris keempat menunjukkan nombor telah di tukar kepada binari

       Jenis I


                Semua opcodes kecuali 000000,00001x, dan 0100xx boleh guna untuk I-type

        Contoh Jenis I:

       Sw $t1,40[$s1]
       Penjelasan:
             Dalam Green MIPS Sheet, kita dapat cari:
-       Nombor Sw ialah 43
-       Nombor pendaftaran untuk $s0, $s1 dan $t1 . Sheet itu menunjukkan $t0-$t7 ialah 8-15 dan $s0-$s7 ialah 16-23.
-       Formula bagi sw ialah rs = rt
-       Baris keempat menunjukkan nombor yang telah ditukar kepada binari


       Jenis J

            
      -    Opcode 00001x sahaja yang boleh diguna dalam J-type
          -          PC <- PC31-28      
      PC merupakan program counter yang digunakan untuk menyimpan arahan alamat. PC dikemas kini    dengan upper 4 bits diikuti dengan 26 bits daripada target (lower 26 bits) seterusnya diikuti 2 0’s. Jumlah bit alamatnya ialah 32.

3.2 Unsigned Binary Integers


Unsigned Binary Integers (Integer perduaan yang tidak bertanda)
   Diberikan satu nombor n-bit

 

  Jarak : 0 sampai +2n – 1
  • Contoh: 0000 0000 0000 0000 0000 0000 0000 10112
             = 0 + … + 1×23 + 0×22 +1×21 +1×20
             = 0 + … + 8 + 0 + 2 + 1 = 1110 
  • Penggunaan 32 bits : 0 sampai +4,294,967,295

2s-Complement Signed Integers
  Diberikan satu nombor n-bit

 



Jarak : –2n – 1 sampai +2n – 1 – 1
 • Contoh: 1111 1111 1111 1111 1111 1111 1111 11002
                  = –1×231 + 1×230 + … + 1×22 +0×21 +0×20
                  = –2,147,483,648 + 2,147,483,644 = –410
Pengunaan 32 bits : –2,147,483,648 sampai +2,147,483,647
Bit 31 merupakan sign bit
   -  1 untuk nombor negatif
   -  0 untuk nombor bukan negative
 
–(–2n – 1) tidak boleh diwakilkan
nombor bukan negative mempunyai unsigned dan 2s-complement yang sama         
nombor tertentu.
   -  0:       0000 0000 … 0000
   -  –1:       1111 1111 … 1111
   -  Paling negatif: 1000 0000 … 0000
   -  Paling positif:  0111 1111 … 1111


Signed negation (Penafian yang bertanda)
Complement and tambah 1
      - Complement bermaksud 1 → 0, 0 → 1
    


 


  Contoh : negate +2
    +2 = 0000 0000 … 00102              –2 = 1111 1111 … 11012 + 1
                                                                = 1111 1111 … 11102

Signed extension (Lanjutan bertanda)
Mewakili satu nombor yang menggunakan lebih bits
   -Memelihara nilai berangka.
 
Dalam arahan set MIPS
  - addi: melanjutkan nilai segera
  - lb, lh: melanjutkan ‘halfword’
  - beq, bne: melanjutkan anjakan
 
Meniru bit bertanda ke arah kiri
  -  c.f. nilai yang tidak bertanda: lanjut dengan banyak 0.

Contoh: 8-bit kepada 16-bit
  - +2: 0000 0010 => 0000 0000 0000 0010
  - –2: 1111 1110 => 1111 1111 1111 1110
    


3.1 Arithmetic Operation

LANGUAGE OF COMPUTER


Arithmetic Operations

Contoh Arithmetic operation:



f = (a + b) –( c + d )



Penyelesaian (compile MIPS kod) :


Langkah Pertama  ------>  add t0, a, b

Langkah Kedua    ------>  add t1, c, d


Langkah Ketiga   ------>  sub f, t0, t1


Register Operands

Contoh register operand :


f =  ( a + b ) - ( c + d )

f,a,b,c,d dalam $s0, $s1, $s2, $s3, $s4


Penyelesaian ( compiled MIPS kod mengguna register) :


Langkah Pertama  ------>  add $t0, $s1, $s2

Langkah Kedua   ------> add $t1, $s3, $s4



Langkah Ketiga  ------>  add $s0, $t0, $t1



Memory operands

Contoh memory operand :


A[20] = h – A[8]

h = $s1,base address of A in $s2.


Penyelesaian ( compiled MIPS code) :



Langkah Pertama  ------>  lw $t0, 32($s2)


Langkah Kedua  ------>  sub $t1, $s1,$t0


   Langkah Ketiga   ------>  sw $t2, (80)$s2


Register VS. Memory

Pebandingan antara Register dan Memory

Register
Memory
Lebih cepat mengakses daripada memory.

Mengakses lebih perlahan daripada register.
Berada di dalam CPU.

Berada di luar CPU.
Tidak perlu loads dan stores.

Perlu loads dan stores.
Penyimpanan sementara dalam CPU untuk memegang data processor itu. 

Memegang arahan program dan data program itu.