LOGBOOK

HELP

Quiz Entry - updated: 2026.07.14

How can you tell whether code was compiled for IA-32 or x86-64?

Read the register names and argument passing: %r8–%r15 or arguments arriving in %rdi/%rsi means x86-64; everything via the stack with %eXX registers means IA-32.

A few quick visual tells separate the two:

Feature IA-32 (32-bit) x86-64 (64-bit)
Registers %eax, %ebx, %ecx… %rax…, plus %r8–%r15
Arguments all on the stack first 6 in registers
Frame pointer almost always %ebp often omitted
Pointer size 4 bytes 8 bytes
Stack ops pushl, popl pushq, popq

IA-32 signature — arguments fetched as offsets from %ebp:

movl  8(%ebp), %eax
movl  12(%ebp), %edx
pushl %ebx

x86-64 signature — arguments already in registers, plus the new R-registers:

movq  %rdi, %rax
movq  %rsi, %rdx
movq  %r12, -8(%rsp)

Quickest check: spotting any %r8%r15, or argument use of %rdi/%rsi, is a dead giveaway that you're looking at 64-bit code.

Go deeper:

From Quiz: REVE1 / The Processor Interface | Updated: Jul 14, 2026