Saya tahu register 32 bit dinamai seperti register 16 bit dengan awalan 'E' berarti diperpanjang. Saya selalu berasumsi bahwa itu berarti diperpanjang dari 16 ke 32 bit meskipun saya belum pernah melihat yang secara eksplisit dinyatakan.
Saya mencoba mencari tahu apa arti 'R' tetapi kemampuan google saya mengecewakan saya. Adakah yang tahu
architecture
x86
Mat
sumber
sumber
Jawaban:
Itu berarti mendaftar , dan itu tidak semua karena alasan historis.
Bagian sejarahnya adalah bahwa Intel terbiasa menghitung register dengan huruf dengan 8008 (A sampai E plus H dan L). Skema itu lebih dari cukup pada saat itu karena mikroprosesor memiliki sangat sedikit register dan tidak mungkin mendapatkan lebih banyak, dan sebagian besar desain melakukannya. Sentimen yang berlaku kemudian adalah bahwa perangkat lunak akan ditulis ulang untuk CPU baru saat mereka muncul, sehingga mengubah skema penamaan register antara model tidak akan menjadi masalah besar. Tidak ada yang meramalkan 8088 yang berkembang menjadi "keluarga" setelah dimasukkan ke dalam PC IBM, dan kuk kompatibilitas ke belakang cukup banyak memaksa Intel untuk harus mengadopsi skema seperti "E" pada register 32-bit untuk mempertahankannya.
Bagian non-historis semuanya praktis. Menggunakan huruf untuk register tujuan umum membatasi Anda hingga 26, lebih sedikit jika Anda menyingkirkan yang mungkin menyebabkan kebingungan dengan nama register tujuan khusus seperti penghitung program, bendera atau penunjuk tumpukan.
Saya tidak punya sumber untuk mengkonfirmasinya, tapi saya menduga pilihan
R
sebagai awalan dan pengenalan R8 hingga R15 pada 64-bit CPU memberi sinyal transisi ke register bernomor, yang telah menjadi norma di antara 32-bit-dan - Arsitektur yang lebih besar tidak berasal dari 8008 selama hampir setengah abad. IBM melakukannya pada 1960-an dengan 360 dan telah diikuti oleh PowerPC, DEC Alpha, MIPS, SPARC, ARM, Intel i860 dan i960 dan banyak lainnya yang sudah lama terlupakan.Anda akan mencatat bahwa register yang ada akan cocok dengan R0 sampai R7 jika ada, dan itu tidak akan mengejutkan saya sedikit jika mereka diperlakukan seperti itu secara internal. Register panjang yang ada (RAX / EAX / AX / AL, RBX / EBX / BX / BL, dll.) Mungkin akan tetap ada sampai matahari terbakar.
sumber
r0
-r7
, atau menggunakanUAX
bukannyar8
, dll . "Mencari tahu cara terbaik untuk mendaftar register sebenarnya adalah salah satu bagian tersulit dari melakukan ekstensi register." (Lihat stackoverflow.com/a/35619528/224132 untuk beberapa sejarah x86-64 yang rapi.) Juga, urutannya bukan RAX / RBX / ... dalam pengkodean biner, itu AX, CX, DX, BXDalam prosesor sebelumnya, tidak semua register sama:
Jadi dengan asumsi bahwa satu register spesifik selalu terlibat ketika adder terlibat, membuat chip lebih kompleks dan opcode lebih pendek.
Misalnya 6510 (digunakan dalam Commodore 64) hanya bisa menambahkan menggunakan register A, dan pengindeksan menggunakan X atau Y. Ada instruksi INC X dan INC Y, tetapi tidak ada INC A.
Karena register memiliki penggunaan yang berbeda, mnemonik dipilih yang mencerminkan penggunaannya. Misalnya A, X, dan Y di 6510 (bukan A, B, dan C).
Nama-nama dalam 8086 dipilih untuk mencerminkan penggunaannya juga. Dengan 4 register tujuan umum, logis untuk menamakannya AX, BX, CX, dan DX. Register pengindeksan tambahan disebut BP dan SP (mnemonic: Base Pointer, Stack Pointer).
Karena banyak opcode diperpanjang hingga 16 bit, ada beberapa ruang untuk menunjukkan yang mana dari empat register yang digunakan. Namun, beberapa alasan historis masih berlaku, karena CX sedikit istimewa: REP dan sejenisnya, yang merupakan opcodes 8 bit, selalu menggunakan CX sebagai penghitungnya. Mnemonic sederhana, CX = Counter, membantu untuk mengingat mana yang digunakan.
Opcode untuk penerus ke 8086 harus kompatibel ke belakang, dan berantakan karena opcode panjang variabel. Ketika bus 32 bit menjadi lebih umum, prosesor dengan panjang opcode tetap dicoba. Ini menyederhanakan bagian decoding dari CPU, yang membebaskan ruang yang dapat digunakan untuk misalnya register lebih banyak.
Prosesor yang mengikuti alur pemikiran ini disebut prosesor RISC (Reduced Instruction Set CPU), berbeda dengan CISC (Complex Instruction Set CPU).
Lebih banyak register menghasilkan lebih sedikit tumpahan ke memori. Pada dasarnya, register adalah cache tercepat yang tersedia, jadi menambah jumlah register adalah ide yang bagus, bahkan saat ini. Kurangnya instruksi khusus (mudah-mudahan lebih dari) dikompensasi oleh instruksi sederhana yang lebih cepat.
Memperbaiki panjang opcode 32 bit memiliki ruang yang cukup untuk memasukkan sumber, sumber kedua, operasi, dan tujuan. SPARC berhasil memeras 5 bit untuk masing-masing sumber, sumber kedua, dan tujuan, dan karenanya 32 register terlihat pada saat yang sama.
32 register terlalu banyak untuk menggunakan huruf, dan mereka sebagian besar tetap sama, jadi memberi nomor adalah pilihan yang jelas. 'R' digunakan untuk membedakan mereka dari konstanta 0..31, dan 'R' adalah mnemonik yang mudah untuk Register. Karena itu: R0..R31.
Selama bertahun-tahun, Pentium dan para penggantinya telah mempertahankan kepatuhan yang mundur. Namun, banyak dari ide RISC yang lebih berhasil juga digabungkan. Seringkali, instruksi baru seperti RISC akan berjalan lebih cepat daripada versi yang kompatibel ke belakang.
Jumlah register juga ditingkatkan oleh Intel, untuk mengurangi jumlah akses memori.
Dan ternyata, Intel akhirnya sudah mulai menggunakan notasi-R. Kompatibilitas mundur akan memastikan bahwa AXE, BX, ... akan tetap ada, tetapi saya berani bertaruh bahwa AXE hanya sinonim untuk misalnya R0.
Penafian : Di atas adalah pandangan saya tentang sejarah. Ini akan menjadi tidak lengkap karena saya tidak ada untuk menyaksikan bagian awal sejarah secara langsung. Meskipun demikian, saya harap ini bermanfaat bagi sebagian orang.
sumber
INX
atauINY
, meskipun kode menempati byte tambahan. Saya menulis banyak perakitan untuk chip itu dan dalam praktiknya kenaikan semacam itu jarang dilakukan di luar matematika yang membutuhkannya.ADD 1
berfungsi sehingga tidak perlu untuk 'Meningkatkan A' khusus. Dan saya tidak ingat membutuhkannya juga.Itu hanya berarti 'daftar'. Untuk alasan historis.
sumber