1, three addresses
A logical address, used in a machine language instruction, to specify an operand or an address of an instruction.
Linear address: 32-bit unsigned integer up to 4GB. A 64-bit CPU is a 64-bit linear address
Physical Address: Memory chip-level memory unit addressing. Old-fashioned x86 are represented by 32-bit or 36-bit unsigned integers.
2,mmu Memory Control Unit
A hardware circuit with a segmented unit converts a logical address to a linear address
A hardware circuit that has a paging unit translates the linear address into a physical address.
Problem:
1, why can the physical address be represented by a 36-bit address?
2, why is the logical address converted to a linear address, and then from the linear address to the physical address, what is the relationship between the 3 addresses?
3, what address is the address after a program is Objdump? The following fragment
0000000000400526 <main>: 400526:55 Push%RBP 400527:48 e5 mov%rsp,%rbp 40052A:48 EC Ten Sub $0x10,%rsp 40052e:89 7d FC mov%edi,-0x4 (%RBP) 400531:48 F0 mov%rsi,-0x10 (%RBP) 400535:BF D4 mov $0x4005d4,%edi 40053a:e8 C1 FE FF FF CALLQ 400400 <[email protected]> 40053f:b8 xx xx $0x0,%eax 400544:C9 Leaveq 400545:C3 RETQ 400546:66 2e 0f 1f xx nopw%cs:0x0 (%rax,%rax,1) 40054d:00 00 00 |
Deep understanding of the Linux kernel-chapter II memory addressing 01