The CPU silicon understands things called “instructions” each instruction describes one thing to do, “move this here” “add these 2 values” etc. To understand how the silicon itself handles this, will take me hours of typing, so look up how an adder works on YouTube to get a basic idea for the rest of this.
Here is some code, this is what the computer actually deals with. From left to right we have
1. An instruction address: this is the location in memory that this instruction is
2. A function offset: Not really important here, it tells me how far into the function this instruction is.
3. “Machine language”: This is what the CPU actually reads and executes
4. The human readable instruction: I cant read machine language so this tells me what this does.
0x401000 <+0>: b8 01 00 00 00 mov eax, 0x1
0x401005 <+5>: ba 0d 00 00 00 mov edx, 0xd
0x40100a <+10>: bf 01 00 00 00 mov edi, 0x1
0x40100f <+15>: 48 be 00 20 40 00 00 00 00 00 movabs rsi, 0x402000
0x401019 <+25>: 0f 05 syscall
0x40101b <+27>: b8 3c 00 00 00 mov eax, 0x3c
0x401020 <+32>: ba 00 00 00 00 mov edx, 0x0
0x401025 <+37>: 0f 05 syscall
0x401027: 00 00 add byte ptr [rax], al
0x401029: 00 00 add byte ptr [rax], al
0x40102b: 00 00 add byte ptr [rax], al
Lets break this down. Memory (RAM) is broken down into bytes, each byte has an address, addresses start form zero and count up with one byte at each address. The CPU starts at the top of this and reads down, we have an instruction pointer that points to our starting point at the top `0x401000` the CPU executes this instruction moving the number `0x0` into `eax`. `eax` is a piece of memory on the CPU that can be accessed *very* quickly.
So how do we actually get this? Well a programming language like C is compiled, which means that the “bunch of letters, numbers, and punctuation symbols” is read by the compiler which will then spit out a file containing this stuff. Some languages work a bit differently where its interpreted, languages like Java, Python, and BASIC, where another piece of software will read `print(“Hello, world!”)` and the interpreter can read this an break it down to figure out what its being asked to do.
Latest Answers