用gdb或者objdump等工具在保护模式下是否能看到真实的物理地址
(gdb) disassemble
Dump of assembler code for function main:
0x08048410 <+0>:push %ebp
0x08048411 <+1>:mov %esp,%ebp
0x08048413 <+3>:and $0xfffffff0,%esp
0x08048416 <+6>:sub $0x1a0,%esp
=> 0x0804841c <+12>:movl $0xa,0x4(%esp)
0x08048424 <+20>:movl $0x1,(%esp)
0x0804842b <+27>:call 0x80483e4 <add_range>
0x08048430 <+32>:mov %eax,0x10(%esp)
这两个应该是线性地址不是真实的物理地址吧?
包括用objdump反汇编的这两个地址?
8048475:89 04 24 mov %eax,(%esp)
8048478:e8 97 ff ff ff call 8048414 <prime>
804847d:85 c0 test %eax,%eax
804847f:74 4e je 80484cf <main+0x81>
8048481:b8 d0 85 04 08 mov $0x80485d0,%eax
8048486:8b 54 24 18 mov 0x18(%esp),%edx
804848a:89 54 24 04 mov %edx,0x4(%esp)
804848e:89 04 24 mov %eax,(%esp)
8048491:e8 8a fe ff ff call 8048320 <printf@plt>
汇编
[解决办法]
看不到,你必须要用内核提供的函数或者自己转换页表。