인텔의 문서에 따르면 FEE0 0000H
~ FEE0 03F0H
은 로컬 APIC의 범위입니다. 그러나, QEMU 콘솔에서 그것을 검사, 난 단지 0이 값을 찾을 수 있습니다QEMU의 지역 APIC 주소는 어디입니까?
(qemu) x/128b 0xfee00000
fee00000: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00008: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00010: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00018: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00020: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00028: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00030: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00038: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00040: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00048: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00050: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00058: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00060: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00068: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00070: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
fee00078: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
내가 확인 128 바이트를 다른 아무것도 0이 적어도, FEE0 0030H
가 다른 값을 포함해야합니다 있는지 확인하기 위해이 곳 APIC 때문에 버전이 있습니다.
페이징을 사용할 수 없으므로 가상 메모리가 없습니다. 단지 물리적 :
(qemu) info mem
PG disabled
그러나, info lapic
명령 보고서 실제 초기 값 :
(qemu) info lapic
dumping local APIC state for CPU 0
LVT0 0x00008700 active-hi level ExtINT (vec 0)
LVT1 0x00008400 active-hi level NMI
LVTPC 0x00010000 active-hi edge masked Fixed (vec 0)
LVTERR 0x00010000 active-hi edge masked Fixed (vec 0)
LVTTHMR 0x00010000 active-hi edge masked Fixed (vec 0)
LVTT 0x00030010 active-hi edge masked periodic Fixed (vec 16)
Timer DCR=0x2 (divide by 8) initial_count = 4096
SPIV 0x000001ff APIC enabled, focus=off, spurious vec 255
ICR 0x000c4610 physical edge assert all
ICR2 0x00000000
ESR 0x00000000
ISR (none)
IRR (none)
그럼, 여기서이 값입니다
?
'x'는 가상 메모리를 검사하고 로컬 APIC의 레지스터는 _ 물리적 페이지 FEE00xxx에 매핑됩니다. –
이것은 보호 모드 만 사용 가능하지만 페이징은 사용 불가능한 매우 간단한 부트 로더에서 가져온 것입니다. 아직 가상 메모리가 없습니다. – Amumu
이미 주어진 답을 바탕으로, APIC가 내장 된 하드웨어/에뮬레이터 (QEMU 포함)에서 _ECX_에'0x1b'를로드하고'rdmsr' 명령을 사용하여 APIC 기본 주소를 찾을 수 있어야합니다. 기본 주소는 _EDX_ : _EAX_입니다. –