Jadual Kandungan
Perbezaan antara Linux x86 (32-bit) dan x64 (64-bit)
Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Apakah perbezaan antara x64 dan x86 dalam linux

Apakah perbezaan antara x64 dan x86 dalam linux

Jan 11, 2022 pm 06:03 PM
linux x86

Perbezaan: 1. Peruntukan daftar yang berbeza, x64 mempunyai 16 daftar, x86 hanya mempunyai 8 daftar 2. Arahan pemasangan yang berbeza; tidak mempunyai penuding bingkai tindanan, manakala x86 menggunakan ebp sebagai penunjuk bingkai tindanan 6. Kelajuan pengkomputeran x64 lebih tinggi daripada x86.

Apakah perbezaan antara x64 dan x86 dalam linux

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.

Perbezaan antara Linux x86 (32-bit) dan x64 (64-bit)

0x01: Perbezaan dalam peruntukan daftar

(1) Terdapat 16 daftar dalam 64-bit dan hanya 8 dalam 32-bit. Tetapi 8 bit pertama 32-bit mempunyai nama yang berbeza, iaitu e_, manakala lapan pertama daripada 64-bit menggunakan r dan bukannya e, iaitu r_. Penamaan daftar bermula dengan e masih boleh digunakan secara langsung pada 32 bit bawah daftar yang sepadan, manakala nama daftar yang selebihnya adalah dari r8 - r15, dan bit bawah ditetapkan oleh d, w, dan b masing-masing
(; 2) 32 bit Gunakan bingkai tindanan sebagai lokasi penyimpanan parameter yang diluluskan, dan gunakan daftar 64-bit, menggunakan rdi, rsi, rdx, rcx, r8, r9 sebagai parameter 1-6 masing-masing, dan rax sebagai nilai pulangan ;
(3) 64-bit tidak mempunyai penuding bingkai tindanan, 32-bit menggunakan ebp sebagai penunjuk bingkai tindanan, 64-bit membatalkan tetapan ini dan rbp digunakan sebagai daftar umum; ) 64-bit menyokong beberapa bentuk pengalamatan berkaitan PC, 32-bit hanya menggunakan kaedah pengalamatan ini apabila menggunakan jmp;

mov, push dan pop lanjutkan siri movq mov dan pushq dan popq untuk mengendalikan perkataan quad.

Tambahan:

(1) movabsq bukan sambungan 32-bit, ia adalah arahan baharu semata-mata. Digunakan untuk menyimpan nilai literal 64-bit terus ke dalam daftar 64-bit. Kerana movq hanya boleh menyimpan nilai 32-bit, arahan baharu

(2) Kod pemasangan 64-bit boleh menambah wakil sebelum ret, di sini rep tidak mempunyai makna praktikal, hanya kerana pemproses AMD, untuk mengelakkan tempat di mana jmp sampai adalah terus ret, yang akan menjadikan pemproses berjalan lebih cepat

0x03: Perbezaan dalam panggilan fungsi

(1) x_64 parameter dihantar melalui daftar (lihat di atas); yang tidak boleh meletakkan semua pembolehubah tempatan dalam daftar akan memperuntukkan ruang pada tindanan; (3) Fungsi boleh memperoleh sehingga 128 bait ruang tindanan. Dengan cara ini, fungsi boleh menyimpan maklumat pada tindanan tanpa mengubah penuding tindanan (iaitu, ruang 128-bait di bawah rsp boleh digunakan terlebih dahulu. Ruang ini dipanggil zon merah. Dalam x86-64, ia tersedia pada setiap masa ); (4) Tiada lagi penunjuk bingkai tindanan, dan kedudukan tindanan kini berkaitan dengan penuding tindanan. Kebanyakan fungsi memperuntukkan semua ruang tindanan yang diperlukan pada permulaan panggilan, dan kemudian memastikan penuding tindanan tidak berubah (5) Sesetengah daftar direka bentuk untuk menjadi daftar storan penerima, dan ini mesti ditukar apabila nilainya diperlukan; untuk ditukar Simpan sekarang dan pulihkan kemudian.

0x04: Perbezaan dalam pemindahan parameter



(1) 6 daftar digunakan untuk memindahkan parameter (lihat
(2) Daftar selebihnya diluluskan seperti sebelumnya (tetapi ia berkaitan dengan rsp, ebp tidak lagi digunakan sebagai penuding bingkai tindanan, dan parameter ke-7 bermula dari rsp, parameter ke-8 bermula dari rsp 8, dan seterusnya) ;

(3) Apabila dipanggil, rsp bergerak ke bawah 8 bit (disimpan dalam alamat pemulangan tidak mempunyai kesan Parameter ke-7 dan seterusnya adalah yang ke-7 bermula dari rsp 8, rsp 16 Mula). dengan yang ke-8, dan seterusnya; 0x05: Perbezaan dalam bingkai tindanan

Bingkai tindanan tidak lagi diperlukan dalam banyak kes, seperti kerana Tiada fungsi lain dipanggil, dan daftar sudah cukup untuk menyimpan parameter, maka hanya alamat pemulangan yang perlu disimpan.

Situasi di mana bingkai tindanan diperlukan:

(1) Terdapat terlalu banyak pembolehubah tempatan dan daftar tidak mencukupi

(2) Beberapa pembolehubah tempatan ialah tatasusunan atau struktur; ) Fungsi menggunakan Ambil operator alamat untuk mengira alamat pembolehubah setempat (4) Fungsi mesti menggunakan tindanan untuk memindahkan beberapa parameter ke fungsi lain (5) Fungsi perlu menyimpan keadaan; daripada beberapa daftar yang disimpan oleh penerima ( untuk memudahkan pemulihan); daripada tindanan kekal tidak berubah, supaya ia boleh Ia digabungkan dengan ofset untuk beroperasi pada nilai yang sepadan, jadi EBP tidak lagi diperlukan sebagai penuding bingkai tindanan. Walaupun banyak kali kita berfikir bahawa tidak ada "bingkai tindanan", setiap panggilan fungsi mesti mempunyai alamat pemulangan yang ditolak ke tindanan Kita juga boleh menganggap alamat ini sebagai "bingkai tindanan" kerana ia juga menyimpan keadaan pemanggil.

0x06: Kelajuan operasi yang berbeza

Lebar data CPU 64-bit ialah 64 bit, dan set arahan 64-bit boleh menjalankan 64-bit arahan data, iaitu Pemproses boleh mengekstrak data 64-bit pada satu masa, iaitu dua kali lebih tinggi daripada 32-bit Secara teori, prestasi akan digandakan dengan sewajarnya.

Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Apakah perbezaan antara x64 dan x86 dalam linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang sebenarnya Linux? Apa yang sebenarnya Linux? Apr 12, 2025 am 12:20 AM

Linux sesuai untuk pelayan, persekitaran pembangunan, dan sistem tertanam. 1. Sebagai sistem pengendalian pelayan, Linux stabil dan cekap, dan sering digunakan untuk menggunakan aplikasi konkurasi tinggi. 2. Sebagai persekitaran pembangunan, Linux menyediakan alat arahan dan sistem pengurusan pakej yang cekap untuk meningkatkan kecekapan pembangunan. 3. Dalam sistem tertanam, Linux ringan dan disesuaikan, sesuai untuk persekitaran dengan sumber yang terhad.

Menggunakan Docker dengan Linux: Panduan Komprehensif Menggunakan Docker dengan Linux: Panduan Komprehensif Apr 12, 2025 am 12:07 AM

Menggunakan Docker di Linux dapat meningkatkan kecekapan pembangunan dan penempatan. 1. Pasang Docker: Gunakan skrip untuk memasang Docker di Ubuntu. 2. Sahkan pemasangan: Jalankan Sudodockerrunhello-World. 3. Penggunaan Asas: Buat kontena Nginx Dockerrun-Namemy-Nginx-P8080: 80-Dnginx. 4. Penggunaan Lanjutan: Buat imej tersuai, bina dan lari menggunakan Dockerfile. 5. Pengoptimuman dan amalan terbaik: Ikuti amalan terbaik untuk menulis dockerfiles menggunakan pelbagai peringkat membina dan dockercompose.

Cara Memulakan Apache Cara Memulakan Apache Apr 13, 2025 pm 01:06 PM

Langkah-langkah untuk memulakan Apache adalah seperti berikut: Pasang Apache (perintah: sudo apt-get pemasangan apache2 atau muat turun dari laman web rasmi) Mula Apache (linux: Sudo Systemctl Mula Apache2; Windows: Klik kanan "Apache2.4" Perkhidmatan dan pilih "Mula") Boot secara automatik (Pilihan, Linux: Sudo Systemctl

Apa yang Harus Dilakukan Sekiranya Pelabuhan Apache80 Diduduki Apa yang Harus Dilakukan Sekiranya Pelabuhan Apache80 Diduduki Apr 13, 2025 pm 01:24 PM

Apabila port Apache 80 diduduki, penyelesaiannya adalah seperti berikut: Cari proses yang menduduki pelabuhan dan tutupnya. Semak tetapan firewall untuk memastikan Apache tidak disekat. Jika kaedah di atas tidak berfungsi, sila buat semula Apache untuk menggunakan port yang berbeza. Mulakan semula perkhidmatan Apache.

Cara memulakan pemantauan oracle Cara memulakan pemantauan oracle Apr 12, 2025 am 06:00 AM

Langkah -langkah untuk memulakan pendengar oracle adalah seperti berikut: Periksa status pendengar (menggunakan arahan status lsnrctl) untuk Windows, mulakan perkhidmatan "TNS pendengar" dalam Pengurus Perkhidmatan Oracle untuk Linux dan Unix, gunakan arahan mula lsnrctl untuk memulakan pendengar untuk menjalankan arahan status lsnrctl untuk mengesahkan bahawa pendengar itu dimulakan

Cara Memantau Prestasi SSL Nginx di Debian Cara Memantau Prestasi SSL Nginx di Debian Apr 12, 2025 pm 10:18 PM

Artikel ini menerangkan bagaimana untuk memantau prestasi SSL pelayan Nginx secara berkesan pada sistem Debian. Kami akan menggunakan NginXExporter untuk mengeksport data status nginx ke Prometheus dan kemudian memaparkannya secara visual melalui Grafana. Langkah 1: Mengkonfigurasi Nginx Pertama, kita perlu mengaktifkan modul Stub_status dalam fail konfigurasi Nginx untuk mendapatkan maklumat status nginx. Tambahkan coretan berikut dalam fail konfigurasi nginx anda (biasanya terletak di /etc/nginx/nginx.conf atau termasuk fail): lokasi/nginx_status {stub_status

Cara Menyiapkan Bin Kitar Semula dalam Sistem Debian Cara Menyiapkan Bin Kitar Semula dalam Sistem Debian Apr 12, 2025 pm 10:51 PM

Artikel ini memperkenalkan dua kaedah mengkonfigurasi tong kitar semula dalam sistem Debian: antara muka grafik dan baris arahan. Kaedah 1: Gunakan antara muka grafik Nautilus untuk membuka Pengurus Fail: Cari dan mulakan Pengurus Fail Nautilus (biasanya dipanggil "Fail") dalam menu desktop atau aplikasi. Cari tong kitar semula: Cari folder bin kitar semula di bar navigasi kiri. Jika tidak dijumpai, cuba klik "Lokasi Lain" atau "Komputer" untuk mencari. Konfigurasikan Properties Bin Recycle: Klik kanan "Bin Kitar Semula" dan pilih "Properties". Dalam tetingkap Properties, anda boleh menyesuaikan tetapan berikut: Saiz maksimum: Hadkan ruang cakera yang terdapat dalam tong kitar semula. Masa pengekalan: Tetapkan pemeliharaan sebelum fail dipadamkan secara automatik di tong kitar semula

Cara memulakan semula pelayan Apache Cara memulakan semula pelayan Apache Apr 13, 2025 pm 01:12 PM

Untuk memulakan semula pelayan Apache, ikuti langkah -langkah ini: Linux/MacOS: Run Sudo SystemCtl Restart Apache2. Windows: Jalankan Net Stop Apache2.4 dan kemudian Net Start Apache2.4. Jalankan Netstat -A | Cari 80 untuk memeriksa status pelayan.

See all articles