5
Arsitektur x86 Arsitektur x86 memiliki 8 General-Purpose Register (GPR), 6 Segmen Register, 1 Flags Pendaftaran dan Pointer Instruksi. Wikipedia-logo.png Wikipedia memiliki informasi terkait di Prosesor register [Sunting] General-Purpose Register (GPR) Para 8 GPR adalah: Akumulator register (AX). Digunakan dalam operasi aritmatika. Counter register (CX). Digunakan dalam shift / memutar instruksi dan loop. Data register (DX). Digunakan dalam operasi aritmatika dan I / O operasi. Base register (BX). Digunakan sebagai pointer ke data (terletak di segmen register DS, ketika dalam mode tersegmentasi). Stack Pointer Register (SP). Pointer ke atas tumpukan. Base Stack Pointer register (BP). Digunakan untuk menunjuk ke dasar dari stack. Sumber register (SI). Digunakan sebagai pointer ke sumber dalam operasi aliran. Register tujuan (DI). Digunakan sebagai pointer ke tujuan wisata di operasi aliran. Urutan yang tercantum di sini adalah untuk alasan: itu adalah urutan yang sama yang digunakan dalam push-to-stack operasi, yang akan dibahas kemudian. Semua register dapat diakses dalam 16-bit dan 32-bit mode. Dalam mode 16-bit, register diidentifikasi dengan singkatan dua huruf dari daftar di atas. Pada modus 32-bit, ini singkatan dua huruf diawali dengan 'E' An. Sebagai contoh, adalah 'EAX' akumulator mendaftar sebagai nilai 32-bit. Hal ini juga memungkinkan untuk mengatasi empat register pertama (AX,

Arsitektur x86

Embed Size (px)

Citation preview

Page 1: Arsitektur x86

Arsitektur x86

Arsitektur x86 memiliki 8 General-Purpose Register (GPR), 6 Segmen Register, 1 Flags Pendaftaran dan Pointer Instruksi. Wikipedia-logo.png

Wikipedia memiliki informasi terkait di Prosesor register [Sunting] General-Purpose Register (GPR)

Para 8 GPR adalah:

Akumulator register (AX). Digunakan dalam operasi aritmatika. Counter register (CX). Digunakan dalam shift / memutar instruksi dan loop. Data register (DX). Digunakan dalam operasi aritmatika dan I / O operasi. Base register (BX). Digunakan sebagai pointer ke data (terletak di segmen register DS, ketika dalam mode tersegmentasi). Stack Pointer Register (SP). Pointer ke atas tumpukan. Base Stack Pointer register (BP). Digunakan untuk menunjuk ke dasar dari stack. Sumber register (SI). Digunakan sebagai pointer ke sumber dalam operasi aliran. Register tujuan (DI). Digunakan sebagai pointer ke tujuan wisata di operasi aliran.

Urutan yang tercantum di sini adalah untuk alasan: itu adalah urutan yang sama yang digunakan dalam push-to-stack operasi, yang akan dibahas kemudian.

Semua register dapat diakses dalam 16-bit dan 32-bit mode. Dalam mode 16-bit, register diidentifikasi dengan singkatan dua huruf dari daftar di atas. Pada modus 32-bit, ini singkatan dua huruf diawali dengan 'E' An. Sebagai contoh, adalah 'EAX' akumulator mendaftar sebagai nilai 32-bit.

Hal ini juga memungkinkan untuk mengatasi empat register pertama (AX, CX, DX dan BX) dalam mode 16-bit sebagai dua bagian 8-bit. Yang paling signifikan byte (LSB), atau setengah rendah, diidentifikasi dengan mengganti 'X' dengan 'L'. Byte paling signifikan (MSB), atau setengah tinggi, menggunakan 'H' sebagai gantinya. Sebagai contoh, CL adalah LSB dari register counter, sedangkan CH adalah yang MSB.

Secara total, ini memberikan kita empat cara untuk mengakses akumulator, counter, dan register data base: 32-bit, 16-bit, 8-bit LSB, dan MSB 8-bit. Empat lainnya diakses hanya dalam dua cara: 32-bit dan 16-bit. Tabel berikut meringkas ini: Daftar Akumulator Counter Data Base Stack Pointer Stack Pointer Sumber Base Tujuan 16-bit AX AL CX DL CL DX BL BX SP BP SI DI AH CH DH BH 32-bit EAX EBX ECX EDX EBP ESI EDI ESP [Sunting] Segmen Register

Page 2: Arsitektur x86

6 Register Segmen adalah:

Stack Segment (SS). Pointer ke stack. Kode Segmen (CS). Pointer ke kode. Data Segmen (DS). Pointer ke data. Extra Segmen (ES). Pointer ke data tambahan ('E' adalah singkatan dari 'Extra'). F Segmen (FS). Pointer ke data ekstra lebih ('F' muncul setelah 'E'). G Segmen (GS). Pointer ke data tambahan masih lebih ('G' muncul setelah 'F').

Sebagian besar aplikasi pada kebanyakan sistem operasi modern (seperti Linux atau Microsoft Windows) menggunakan model memori yang menunjuk hampir semua register segmen ke tempat yang sama (dan menggunakan paging sebagai gantinya), secara efektif mematikan penggunaannya. Biasanya penggunaan FS atau GS merupakan pengecualian terhadap aturan ini, malah digunakan untuk menunjuk data thread-spesifik. [Sunting] EFLAGS Register

The EFLAGS adalah register 32-bit digunakan sebagai vektor untuk menyimpan dan mengontrol hasil usaha dan keadaan prosesor.

Nama bit ini adalah: 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 0 0 0 0 0 0 0 0 0 0 ID VIP VIF RF VM AC 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 NT IOPL DARI DF IF TF SF ZF AF 0 0 PF 1 CF

Bernama bit 0 dan 1 dicadangkan bit dan tidak boleh diubah. Penggunaan flag-flag ini berbeda adalah: 0. CF: Carry Flag. Atur jika operasi aritmatika terakhir dilakukan (penambahan) atau meminjam (pengurangan) sedikit melebihi ukuran register. Ini kemudian diperiksa saat operasi diikuti dengan tambahan-dengan-membawa atau mengurangi-dengan-meminjam untuk berurusan dengan nilai terlalu besar untuk hanya satu mendaftar untuk mengandung. 2. PF: Flag Parity. Mengatur jika jumlah bit di dalam byte paling signifikan merupakan kelipatan dari 2. 4. AF: Sesuaikan Flag. Carry dari Kode Biner Desimal (BCD) nomor operasi aritmatika. 6. ZF: Zero Flag. Atur jika hasil operasi adalah Nol (0). 7. SF: Flag Daftar. Atur jika hasil operasi negatif. 8. TF: Flag Trap. Atur jika langkah demi langkah debugging. 9. JIKA: Flag Gangguan. Atur jika menyela diaktifkan. 10. DF: Flag Arah. Stream arah. Jika diset, operasi string akan pengurangan pointer mereka daripada incrementing itu, membaca memori mundur. 11. DARI: Flag Overflow. Atur jika ditandatangani hasil operasi aritmatika pada nilai terlalu besar untuk register mengandung. 12-13. IOPL: I / O Privilege bidang Level (2 bit). I / O Privilege Tingkat proses saat ini.

Page 3: Arsitektur x86

14. NT: Nested Tugas bendera. Kontrol interrupt chaining. Atur jika proses saat ini terkait dengan proses selanjutnya. 16. RF: Resume Flag. Respon untuk debug pengecualian. 17. VM: Virtual-8086 Mode. Atur jika di 8086 modus kompatibilitas. 18. AC: Periksa Alignment. Atur jika keselarasan pengecekan referensi memori dilakukan. 19. VIF: Flag Interrupt Virtual. Virtual citra IF. 20. VIP: Virtual Interrupt Pending bendera. Mengatur apakah interrupt sedang menunggu. 21. ID: Flag Identifikasi. Dukungan untuk instruksi CPUID jika dapat diatur. [Sunting] Instruksi Pointer

Register EIP berisi alamat dari instruksi berikutnya yang akan dieksekusi jika tidak ada percabangan dilakukan.

EIP hanya bisa dibaca melalui tumpukan setelah instruksi panggilan. [Sunting] Memori

Arsitektur x86 adalah little-endian, yang berarti bahwa nilai-nilai multi-byte ditulis paling byte signifikan pertama. (Hal ini mengacu hanya untuk pemesanan byte, bukan kepada bit.)

Sehingga nilai 32 bit B3B2B1B016 di x86 itu akan direpresentasikan dalam memori sebagai: Little endian representasi B0 B1 B2 B3

Sebagai contoh, 32 bit double word 0x1BA583D4 (yang 0x menunjukkan heksadesimal) akan ditulis dalam memori: Little endian contoh D4 83 A5 1B

Ini akan terlihat sebagai 0xD4 0x1B 0x83 0xA5 saat melakukan dump memori. [Sunting] Dua representasi's complement

Two's complement adalah cara standar untuk mewakili bilangan bulat negatif dalam biner. Tanda nomor adalah diubah dengan membalik semua bit dan menambahkan satu.

0001

terbalik untuk:

1110

menambahkan satu jaring:

1111

Page 4: Arsitektur x86

0001 mewakili 1 desimal

1111 merupakan -1 desimal