source codehigh-level codex = a + b

Written and read by people. What you see when you open a file in VS Code.

compiler IRLLVM IR, rustc HIR / MIR, GCC GIMPLE%x = add nsw i32 %a, %b

The compiler’s own working form. Most optimization happens here, and it is not tied to any CPU. clang -S -emit-llvm prints it.

Java, C# and Python branch off here
bytecodeIL, CIL, MSIL, p-code, .pyc, .class, CIL inside .dllBINARY_OP 0 (+) / iadd / add

Read 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.

An interpreter runs it one instruction at a time. A JIT compiles the most frequently run parts into machine code, and only then does the code rejoin the machine code at the bottom of the left column.
assemblyasm, .sadd eax, ebx

One CPU instruction per line, valid for one CPU family only. gcc -S produces it; objdump -d recovers it from an executable.

object codeobject file, .o, .obj01 d8 addresses of external symbols left blank

The .o file an assembler produces. Already machine code, but calls into other files still have no address. nm shows the symbol table.

machine codenative code (broad sense), executable (ELF, .exe)01 d8

Bytes 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.