It is not possible to use Amd64 instructions (long mode) on a 32-bit general-purpose operating system (without modifying the kernel / special drivers / hypervisors).
This is because:
1) to use your own 64-bit instructions, you need to switch to long mode. This is a privileged action. The 32-bit kernel of the operating system cannot continue to work if the CPU switches to 64-bit mode, so you must switch back before entering the kernel
2) But the kernel is often called asynchronously, for a timer (scheduler) and other hardware interrupts (drivers). It will not save 64-bit registers and does not change the mode from long to protected.
Maybe you can write a special driver that will perform 64-bit tasks in a 32-bit OS, but such a driver is more like a 64-bit kernel and a dynamic kernel patcher. I do not know such a solution.
You can use MMX, SSE, SSE2, SSE3, AVX to access 64-bit ALUs and registers of your processor when working in 32-bit OS.
I can say that Linux, some BSD, Mac OS X have a mode when the 64-bit kernel is used, but the user space software is 32-bit. In this case, it will be possible to run both 32-bit and 64-bit applications, because the kernel knows about 64-bit mode and can access 64-bit registers to switch tasks. As far as I know, MS Windows does not have such a mode (W7 emulates 32-bit mode, but this is called by my MS as a simulator, so I assume that this is not a built-in function).
Another possibility (better, your processor supports hardware virtualization), is to use a 64-bit hypervisor (VMware / Xen, other high-end solutions) with 32-bit and 64-bit guest OSs. VirtualBox is another use case for the hypervisor, and it can be used freely.
source share