Pages

Sunday 16 December 2012

Language of computer (operands)



Language of computer
Operands of the computer
  • Tidak serupa high-level punya bahasa , operands of arithmetic instruction tidak boleh ada   variables, mesti ada limited number dan letak dalam tempat special yang dipanggil registers.
  • Registers adalah bricks dalam computer construction, bagi  registers adalah bahasa asal yang diguna dalam hardware design dan juga dilihat kepada  programmer apabila computer disiapkan.
  • 32 bits adalah nama dalam MIPS architecture (32 bit)
  • Satu berbezaan antara variables of a programming language and registers ialah limited nombor bagi registers, biasanya 32. (MIPS ada 32 registers)
  • Nombor  registers yang besar akan tambah masa  kitar jam, ini kerana masa yang guna dari  electronic signals telah panjang apabila  travel lebih jauh.
  • MIPS convention adalah guna dua nama character mengikuti satu dollar sign untuk  represent satu  register. Sebagai contohnya  $s0, $s1,$s2 ...register ini akan digunakan dalam variables in C dan JAVA programs.
  • $t0,$t1,$t2… adalah register yang sementara untuk menyusun program di MIPS instructions.
CONTOH:
Tukar C code kepada MIPS code.
f = ( g + h ) – ( i – j )
f,g,h,i,j akan tukar kepada register $s0,$s1,$s2,$s3, dan $s4.
Solution: add $t0,$s1,$s2 # register $to akan masukan g+h.
                sub St1,$s3,$s4 #register St1 akan masukan i – j.
                sub $s0,$t0,$t1 # f = $t0 - $t1 , yang maksud f = ( g + h ) – ( i – j )
Memory operand
  • Processor hanya boleh simpan jumlah yang kecil dalam  registers, tetapi komputer memory mengandungi berjuta-juta elemen data.
  • Oleh complex struktur data, seperti arrays, disimpan dalam memory.
  • Arithmetic operations hanya muncul dalam registers dan berada di MIPS instructions.
  • Data transfer instructions adalah instructions yang  transfer data antara memory dan registers (tradisional dipanggikan  load).
  • Untuk masukan word dalam memory,  instruction itu mesti supply memory address.
  • Memori adalah besar, satu dimensional  array dengan addres akan bertindak sebagai index kepada array itu, dan akan bermula pada 0.
  • MIPS nama sebenar bagi  data transfer instruction adalah lw, yang bermaksud load word. Sebagai contoh : lw  $t0, 8($s3).
  • The constant dalam  data transfer instruction adalah dipanggil offset, dan register ditambah untuk membentukan ke dalam address yang dipanggil  base register.
  •  8-bit bytes mempunyai kegunaan dalam banyak programs dan kebanyakkan architectures address individual bytes .
  • Oleh itu, address bagi word matches address dari pada satu antara 4 bytes within word itu, dan address bagi sequential words differ by 4.
·         Dalam MIPS ,words  mesti sentiasa mula pada addresses yang multiples of 4 . Syarat ini dipanggil (alignment restriction) dan banyak architectures adanya.
·         Alignment restriction bermaksud satu keperluan bahawa data selari dengan memory dalam  natural boundaries.
  • Arahan complementary untuk  load is adalah panggil store
  • Store adalah digunakan untuk pindah data dari register ke memory. 
  • Dalam  MIPS  store adalah sw,  maksudnya ialah store word.
  • Biasanya process yang letakkan variables kedalam memory ialah spilling registers.
CONTOH:
1.Compiling an assignment when an operand is in memory.
Bagi A adalah array kepada 100words , g dan h pula adalah register $s1 dan $s2. Base address bagi array adalah $s3. Compile C assignment ini.
g = h + A[8] ;
Mula-mula transfer A[8] kepada satu register. Array A jumpa di register $s3 dan tambah element 8. Data perlu masuk ke temporary register untuk instruction seterusnya . Compiled instruction pertama adalah...
            lw $t0, 8($s3) # Register temporary St0 adalah untuk dapat A[8]
Instruction seterusnya adalah operate value dalam $t0 dan instruction mesti add h($s2) kepada $t0 lepas itu letakkan tambahan ini ke register $s1.
            Add $s1 , $s2 , $t0 # ini ialah g= h + A[8]
2.Compile dengan mengunakan load dan store
Bagi h adalah register $s2 dan base address bagi array A adalah $s3 . Tukarkan C assignment ini  kepada MIPS code :
            A[12] = h + A[8]
Mula-mula akan gunakan proper offset bagi byte addressing dalan load word instruction untuk select A[8] dan add instruction akan letakan tambah dalam $t0.
            lw $t0 , 32($s3) # Register temporary $t0 untuk dapatkan A[8]
            add $t0 , $s2 , $t0 # Register temporary $t0 untuk dapatkan h + A[8]
Instruction yang terakhir untuk stores tambah dalam A[12] , adalah guna 48 (4 x 12) as offset dan register $s3 adalah base register.
            sw St0 , 48($s3) # Untuk stores h + A[8] masuk balik ke dalam A[12]
Constant and immediate operands

CONTOH:
Untuk add constant 4 kepada register $s3 , kita oleh guna code seperti:
            1w $t0 , AddrConstant4($s1)  # $t0 adalah sama dengan constant 4
            add $s3 , $s3 , $t0  # $s3 sekarang adalah $s3 + $t0($t0 adalah 4)
bagikan $s1 + AddrConstant4  adalah memort address untuk constant 4 . Untuk lebih cepat add instruction dengan satu conatant operand adalah add immediate atau addi . Untuk add 4 kepada register $s3 , kita boleh guna :
            addi $s3 , $s3 , 4  # Cara ini adalah untuk dapat  $s3 = $s3 + 4

CHOO YIE  YUNG  (B031210026)





0 comments:

Post a Comment