x = a + bWritten and read by people. What you see when you open a file in VS Code.
%x = add nsw i32 %a, %bThe compiler’s own working form. Most optimization happens here, and it is not tied to any CPU. clang -S -emit-llvm prints it.
BINARY_OP 0 (+) / iadd / addRead by a VM, not by any CPU. CPython saves it as .pyc, javac as .class, Roslyn inside a .dll. python -m dis and javap -c turn it back into readable text.
add eax, ebxOne CPU instruction per line, valid for one CPU family only. gcc -S produces it; objdump -d recovers it from an executable.
01 d8 addresses of external symbols left blankThe .o file an assembler produces. Already machine code, but calls into other files still have no address. nm shows the symbol table.
01 d8Bytes the CPU runs directly: an executable the linker built from .o files, or code a JIT compiled into memory. xxd shows the bytes, which mean nothing to a person.