Arasındaki fark amd64 ve i386 olmasıdır amd64'tür olan 64-bit ise i386 olan bir 32-bit . Bu, çekirdekte bulunan yazmaçların genişliğidir (bit olarak).
Temelde bir 32 bit CPU çekirdeğinin bir seferde kaldırabileceği en büyük sayı 4.29 milyar'ın biraz üzerinde iken, 64 bit çekirdekli bir miktar 18.44 milyar milyar'ın üzerinde bir miktar işlem yapabilir.
Modern PC'lerdeki çekirdekler, kurduğunuz işletim sisteminin hangi sürümüne bağlı olarak 64 bit veya 32 bit işlemci olarak işlev görebilir.
64 bitlik kod 32 bitlik koddan daha hızlı çalışma eğilimindedir ya da devam ederken daha büyük sayılarla başa çıkabildiğinden veya 64 bitlik çekirdeğin daha fazla kaydı olduğundan, harici belleğe bir şey koymaya gerek kalmadan daha fazla şeyi depolayabilmesi nedeniyle. İşlemcinin ekstra özelliklerinden yararlanmak için kod yazılmadıysa, 64 bit kodun daha hızlı çalışacağının garantisi yoktur.
32 bit sistemde derleme, 64 bit sistemden farklı bir kod üretecektir. Bunu iki sistemdeki montaj kodunu derleyerek ispatlayabilirsiniz. C dosyanızın myfile.c olduğunu varsayalımgcc -S myfile.c
, her iki sistemde de deneyin ve myfile.s dosyasını karşılaştırın .
32 bitlik bir sistem için iyi yazılmış kodun 64 bitlik bir sistemde derlenmesi ve çalıştırılması gerekir, ancak tüm kodlar iyi yazılmış değildir. Birçok programcı, sistem hakkında doğru olmayan varsayımlarda bulunur: kayıt genişliği veya bayt sırası gibi.
Kaynak kodunuza erişmeden, sorunun ne olduğunu anlamak zor ancak segmenation fault
bunun programa ait olmayan belleğe erişme girişiminde bulunduğunu gösterir. Bu, örneğin, mem_ptr'nin 32-bit bir sistemde iyi olan ancak 64-bit bir sistemde 64-bit bir işaretçi olması gereken 32-bit bir işaretçi olduğunu gösterebilir .