The x64 architecture is a backwards-compatible extension of x86. It provides a legacy 32-bit mode, which is identical to x86, and a new 64-bit mode.
The term «x64» includes both AMD 64 and Intel64. The instruction sets are close to identical.
Registers
x64 extends x86’s 8 general-purpose registers to be 64-bit, and adds 8 new 64-bit registers. The 64-bit registers have names beginning with «r», so for example the 64-bit extension of eax is called rax. The new registers are named r8 through r15.
The lower 32 bits, 16 bits, and 8 bits of each register are directly addressable in operands. This includes registers, like esi, whose lower 8 bits were not previously addressable. The following table specifies the assembly-language names for the lower portions of 64-bit registers.
64-bit register
Lower 32 bits
Lower 16 bits
Lower 8 bits
rax
eax
ax
al
rbx
ebx
bx
bl
rcx
ecx
cx
cl
rdx
edx
dx
dl
rsi
esi
si
sil
rdi
edi
di
dil
rbp
ebp
bp
bpl
rsp
esp
sp
spl
r8
r8d
r8w
r8b
r9
r9d
r9w
r9b
r10
r10d
r10w
r10b
r11
r11d
r11w
r11b
r12
r12d
r12w
r12b
r13
r13d
r13w
r13b
r14
r14d
r14w
r14b
r15
r15d
r15w
r15b
Operations that output to a 32-bit subregister are automatically zero-extended to the entire 64-bit register. Operations that output to 8-bit or 16-bit subregisters are not zero-extended (this is compatible x86 behavior).
The high 8 bits of ax, bx, cx, and dx are still addressable as ah, bh, ch, dh, but cannot be used with all types of operands.
The instruction pointer, eip, and flags register have been extended to 64 bits (rip and rflags, respectively) as well.
The x64 processor also provides several sets of floating-point registers:
Eight 80-bit x87 registers.
Eight 64-bit MMX registers. (These overlap with the x87 registers.)
The original set of eight 128-bit SSE registers is increased to sixteen.
Calling Conventions
Unlike the x86, the C/C++ compiler only supports one calling convention on x64. This calling convention takes advantage of the increased number of registers available on x64:
The first four integer or pointer parameters are passed in the rcx, rdx, r8, and r9 registers.
The first four floating-point parameters are passed in the first four SSE registers, xmm0—xmm3.
The caller reserves space on the stack for arguments passed in registers. The called function can use this space to spill the contents of registers to the stack.
Any additional arguments are passed on the stack.
An integer or pointer return value is returned in the rax register, while a floating-point return value is returned in xmm0.
rax, rcx, rdx, r8—r11 are volatile.
rbx, rbp, rdi, rsi, r12—r15 are nonvolatile.
The calling convention for C++ is very similar: the this pointer is passed as an implicit first parameter. The next three parameters are passed in remaining registers, while the rest are passed on the stack.
Addressing Modes
The addressing modes in 64-bit mode are similar to, but not identical to, x86.
Instructions that refer to 64-bit registers are automatically performed with 64-bit precision. (For example mov rax, [rbx] moves 8 bytes beginning at rbx into rax.)
A special form of the mov instruction has been added for 64-bit immediate constants or constant addresses. For all other instructions, immediate constants or constant addresses are still 32 bits.
x64 provides a new rip-relative addressing mode. Instructions that refer to a single constant address are encoded as offsets from rip. For example, the mov rax, [addr] instruction moves 8 bytes beginning at addr + rip to rax.
Instructions, such as jmp, call, push, and pop, that implicitly refer to the instruction pointer and the stack pointer treat them as 64 bits registers on x64.
Windows 10 32 or 64 bit – Which is the Right Architecture for You?
Windows 10 comes in two architectures: 32-bit and 64-bit. What’s the difference? To oversimplify it, you’re making a choice between compatibility and performance. Windows 10 32-bit is more likely to work with older hardware and software, but you’ll miss out on some of the performance and feature benefits that are only available in Windows 10 64-bit. In this article, we’ll walk you through the finer details so you can choose the best architecture for your needs.
Microsoft first released a 64-bit version of Windows in 2005. The 64-bit processor, which AMD first brought to market in 2003, it unleashed a lot of potentials, such as improved security and performance for games and industrial applications and the ability to address more memory.
For a long time, many OEMs preinstalled 32-bit Windows on 64-bit capable systems with sound reason. Many applications and hardware drivers remained compatible with the previous architecture for years. With the release of Windows 7 in 2009, 64-bit computing finally came into vogue. Software drivers for popular peripherals such as printers and other devices supported the newer architecture. After 10 years of 64 bit in mainstream computing, there are decisions to make when considering an upgrade to Windows 10.
Choosing the Right Version of Windows 10 – 32 or 64 bit?
There are a couple of factors that should consider when choosing a Windows 10 architecture.
How much RAM do you have?
Windows 10 64-bit is recommended if you have 4 GB or more RAM. Windows 10 64-bit supports up to 2 TB of RAM, while Windows 10 32-bit can utilize up to 3.2 GB. The memory address space for 64-bit Windows is much larger, which means, you need twice as much memory than 32-bit Windows to accomplish some of the same tasks. But you’ll be able to perform more tasks and process more information. For instance, you can have more applications open, run an Antivirus scan in the background, keep lots of browser tabs open or run multiple VMs without it affecting your overall system performance. Even though Windows 10 64-bit works best with 4 GB of RAM installed, the bare minimum requirements are actually 2 GB of RAM.
Which version of Windows 7 or Windows 8 are you running?
Microsoft recommends users upgrade to a corresponding architecture of Windows 10; if you have a 32-bit version of Windows 7 or 8 currently installed, you should choose 32-bit Windows 10 and vice-versa for Windows 10 64 bit. In a perfect world, that works, but in reality, some older CPUs are just not compatible with later versions of Windows 10. Read on for a prime example.
Does your CPU support the additional security features of Windows 10 64-bit?
Windows 10 64-bit includes a few additional security features that aren’t available in Windows 10 32-bit. For example, 64-bit versions of Windows require that all device drivers be signed. Driver signature enforcement means that you can only use drivers that Microsoft recognizes. This prevents malicious or buggy drivers from being used on your system.
Security features like driver signature enforcement are good, but older CPUs may not be fully compatible with Windows 10 64-bit, even if you were running Windows 7 or Windows 8 64-bit previously. This could be a result of lacking the proper security instructions at the CPU level. Common errors users will come across when attempting to upgrade to Windows 10 64-bit is the CMPXCHG16B/CompareExchange128 or CPU Not Compatible errors. You can easily check if your processor supports CMPXCHG16B/CompareExchange128 by using the free Coreinfo utility.
The release of Windows 8 in 2012 introduced a new set of security requirements at the processor level. The unusual thing about these requirements is that some fairly recent and older CPUs might or might not include these extensions. For instance, a Core 2 Quad from 2008 might include the NX (No eXecute bit), or the equivalent XD (eXecute Disabled), while a 2010 Core i3 might not.
The best way to find out is to load the BIOS or UEFI firmware, check the security category then enable it. In some cases, if the option is not available, it is possible your system could enable the feature through a BIOS or firmware update. This will require contacting the manufacturer or checking the downloads section for the make and model of your computer for current updates. If none is available, you might need to consider switching to 32-bit Windows 10, which might work instead. If your system has more than 4 GB of RAM installed, this could mean sacrificing some of it for the sake of compatibility.
Other hardware considerations
Choosing the architecture should depend on the type of system too. The rise of 64-bit computing came out of the necessity for workstations requiring more processor power for scientific and industrial applications. The netbook form factor existed for a while, but the rise of tablets in the late 2010s pushed them aside. Netbooks featured lower performance processors such as the Intel Atom and often came with 2 GB or less RAM. Windows 7 Starter edition was often the chosen operating system for these systems; which was only available as a 32-bit operating system.
Even though some Intel Atom processors support 64-bit Windows, the vast majority don’t due to requirements at the BIOS and c hipset level. For many owners of netbooks, 64-bit Windows is just not recommended even if you can run it . Netbooks were primarily designed for content consumption and light productivity tasks such as web browsing, word processing, email, streaming video and listening to music. In this regard, 32-bit Windows 10, if compatible, should be more than sufficient for such form factors. You can always upgrade the RAM or storage to an SSD for added performance if this is an option with your system.
For processors such as the Core 2 Duo, earlier AMD 64 processors and Intel 64 processors released prior to 2008, even if you are running a 64-bit compatible version of Windows, today, such as Vista or Windows 7, this does not mean its recommended or possible with Windows 10. As noted, newer operating system requirements and also performance might make it a deterrent.
In 2007 I had an Acer Ferrari 5000, which came with an AMD Turion 64-bit processor, ATI Radeon 128 Graphics and 2 GB of RAM. Back then that was state-of-the-art, but as Windows 10 became more powerful, the idea of trying to eek more life out of my existing hardware didn’t seem reasonable. Before Microsoft developed a 64-bit compatible operating system for the AMD 64 processor, the company noted 32-bit versions of Windows gaining a 9% performance boost just from running on 64-bit hardware. The same could be true even for modern 32-bit versions of Windows 10.
Which applications do you rely on?
For many users these days, 64-bit Windows 10 can make a lot of sense, but specifically on recent or newer systems. If you need to run the latest graphics intense games, multiple virtual machines and industrial applications such as AutoCAD, there is no other choice . For years now, companies such as Microsoft, Autodesk , and Adobe have released 64-bit versions of their flagship desktop applications such as Microsoft Office, AutoCAD, and the Adobe Creative Cloud.
If you must run these types of applications—especially the latest versions—it is in your best interest to keep up on the hardware side too. If application compatibility is important to you, choosing 64-bit Windows 10 might be out of the question. Since its introduction, 64-bit versions of Windows have sacrificed 16-bit support. The lack of a 16-bit subsystem means users won’t be able to run legacy applications designed for older versions of Windows, such as Windows 3.1. Windows 10 32-bit still includes the 16-bit subsystem, but I found it to be extremely buggy. You’ll get more mileage out of a virtual machine running a compatible version of Windows for older applications.
As your system ages, choosing 64 bit Windows 10 might not necessarily make sense. Microsoft has not made pronouncements regarding the death of 32-bit Windows yet. Based on the millions of capable machines still out there, it would seem unreasonable to do so. Not to mention, if Microsoft drops them, 32-bit versions of the Linux operating system—many of which are still in active development—will gladly pick up the slack.
Conclusion
Ultimately, your choice will boil down to compatibility versus performance. If I were to make this simple, I would advise you to modify your expectations as your PC ages, especially as Windows 10 matures and adds advanced features, some of which are becoming exclusive to the 64-bit versions. For instance, Hyper-V and the Windows Subsystem for Linux both require 64-bit Windows 10. Of course, this might be a chore for users, requiring a clean install, finding application disks and setup files, backing up personal files and preparing to migrate. That said, prolonging the life of your system, especially with Windows 10’s lifecycle, will require re-evaluating the capabilities of the system every few years.