Pengenalan
MIPS mempunyai hanya sebilangan kecil daripada cara yang
mengira alamat dalam ingatan. Alamat boleh menjadi alamat arahan (cawangan dan
arahan melompat) atau ia boleh menjadi alamat data (untuk beban dan arahan
kedai).
Kami akan melihat empat cara alamat dikira
• Daftar Menangani ini digunakan dalam arahan jr (melompat
pendaftaran).
• PC-Saudara Menangani Ini digunakan dalam beq dan BNE
(cawangan sama, cawangan tidak sama) arahan.
• Pseudo-langsung Menangani ini digunakan dalam arahan j
(melompat).
Pangkalan
• Menangani Ini digunakan dalam LW dan SW (beban perkataan,
perkataan kedai) arahan.
Daftar Menangani
Panggilan biasa adalah:
jr $ rs
mana $ rs digantikan oleh mana-mana mendaftar.
Semantik ini ialah:
PC <- R [s]
Ini bermakna PC (program counter) dikemaskini dengan
kandungan daftar s. Ingat bahawa melompat atau cawangan dikemaskini dengan
mengubah suai kandungan kaunter program.
Daftar menangani memberikan anda keupayaan untuk menjana
mana-mana alamat dalam ingatan. Pengecualian alamat berlaku jika dua bit rendah
tidak 00.
PC-Menangani relatif
PC-saudara menangani berlaku dalam arahan cawangan, beq dan
BNE (dan variasi lain arahan cabang).
Arahan ini adalah arahan I-jenis, dengan format berikut.
Opcode
|
Target
|
B31-26
|
B25-0
|
ooo ooo
|
tt tttt tttt tttt tttt tttt tttt
|
pelbagai memori yang besar. Nilai segera adalah dalam 16 bit
2C, jadi julat nilai -215 sehingga 215 - 1.
Arahan cabang digunakan terutamanya untuk melaksanakan
gelung atau penyata jika-lain. Apabila anda melompat ke dalam kenyataan
jika-lain atau gelung, anda biasanya melompat ke arahan berdekatan dari satu
anda melompat dari. Arahan anda melompat dari mesti telah menjadi satu di PC,
oleh itu ia masuk akal untuk melompat relatif kepada PC.
Sebagai contoh, jika anda mempunyai arahan cawangan alamat
pada 1000, maka ia berkemungkinan anda akan melompat tempat berhampiran arahan
cawangan.
A (pendekatan dan dengan itu tidak betul) naif untuk
melakukan perkara berikut:
PC <- PC +
tanda-ext32 (IR15-0) SALAH!
di mana tanda-ext32 (X) bermakna untuk menandatangani
melanjutkan X kepada 32 bit.
Mengapa ini naif? Kita tahu fakta-fakta berikut:
• MIPS arahan 32-bit.
• 32 kuantiti sedikit dalam MIPS mesti disimpan dalam
ingatan di perkataan Berkecuali alamat.
• Firman sejajar alamat akhir Tahun 00 apabila ditulis dalam
binari.
• Oleh itu, PC, yang menyimpan alamat arahan mesti memegang
alamat perkataan Negara-Negara Berkecuali.
Jika kita pergi ke cawangan ke alamat tertentu, dan PC sudah
perkataan sejajar, maka nilai serta-merta telah menjadi perkataan Negara-Negara
Berkecuali serta.
Walau bagaimanapun, ia tidak masuk akal untuk membuat
terdekat perkataan-sejajar kerana kita sedang membuang dua bit rendah dengan
memaksa ia menjadi 00.
Ia tidak masuk akal yang lebih untuk membolehkan terdekat
16-bit untuk menjadi mana-mana 216 nilai yang mungkin serta-merta. Bahawa cara
anda membuat menggunakan sepenuhnya nilai terdekat. Ia adalah sama IEEE 754
titik terapung di mana kita tidak mewakili 1 tersembunyi dalam pecahan bagi nombor
titik terapung ternormal. Sejak ia adalah sentiasa ada, mengapa membazirkan
sedikit untuk mewakili ia?
Sebenar PC-saudara menangani
Berikut adalah bagaimana alamat adalah benar-benar dikira.
PC <- PC + tanda-ext32 (IR15-0 :: 00)
Anda mengambil nilai 16 bit segera, menambah dua sifar
hingga akhir (yang adalah sama seperti peralihan logik meninggalkan 2 bit). Ini
mewujudkan nilai yang dibahagi dengan 4. Kemudian, anda sign melanjutkan kepada
32 bit, dan menambah ia ke PC.
Oleh itu, pelbagai alamat yang mungkin adalah: PC - 217
sehingga PC + (217-4) 217 adalah 128 K. Jadi anda boleh melompat kembali kira-kira
-128.000 byte ke belakang sehingga kepada kira-kira 128,000 bytes hadapan. Itu
besar, tetapi masih sebahagian kecil daripada memori. Mujurlah, untuk arahan
cawangan, anda tidak perlu untuk melompat yang jauh, jika anda menulis kod yang
agak baik.
No comments:
Post a Comment