Monday 17 December 2012

MIPS : Basic x86 Addressing Modes ( By M.F. Afandi)



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