Perbedaan antara amd64 dan i386 adalah bahwa amd64 adalah 64-bit sedangkan i386 adalah 32-bit . Ini adalah lebar (dalam bit) register yang tersedia di inti.
Pada dasarnya jumlah terbesar yang dapat ditangani oleh inti CPU 32-bit dalam sekali jalan adalah sedikit di atas 4,29 miliar sedangkan inti 64-bit dapat menangani jumlah sedikit di atas 18,44 miliar, miliar.
Core di PC modern mampu berperilaku sebagai prosesor 64-bit atau 32-bit tergantung pada versi sistem operasi yang Anda instal.
Kode 64-bit cenderung berjalan lebih cepat daripada kode 32-bit karena dapat menangani jumlah yang lebih besar saat bepergian atau karena inti 64-bit memiliki lebih banyak register sehingga dapat menyimpan lebih banyak hal tanpa perlu memasukkan sesuatu ke dalam memori eksternal. Meskipun tidak ada jaminan bahwa kode 64-bit akan berjalan lebih cepat jika kode tersebut belum ditulis untuk memanfaatkan fitur tambahan dari prosesor.
Kompilasi pada sistem 32-bit akan menghasilkan kode yang berbeda dari sistem 64-bit. Anda dapat membuktikan ini dengan mengkompilasi kode assembly pada kedua sistem. Dengan asumsi file C Anda adalah myfile.c coba gcc -S myfile.c
di kedua sistem dan bandingkan myfile.s
Kode yang ditulis dengan baik untuk sistem 32-bit harus dikompilasi dan dijalankan pada sistem 64-bit tetapi tidak semua kode ditulis dengan baik. Banyak pemrogram membuat asumsi tentang sistem yang mungkin tidak benar: seperti register width atau byte order.
Tanpa akses ke kode sumber Anda, sulit untuk melihat apa masalahnya tetapi segmenation fault
menunjukkan bahwa upaya telah dilakukan untuk mengakses memori yang bukan milik program. Ini mungkin, misalnya, menunjukkan bahwa mem_ptr adalah pointer 32-bit yang baik-baik saja pada sistem 32-bit tetapi perlu pointer 64-bit pada sistem 64-bit.