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)