OSDev http://osdev.su/ |
|
Проверка плоского режима http://osdev.su/viewtopic.php?f=6&t=709 |
Страница 1 из 1 |
Автор: | pavia [ 09 мар 2013, 21:34 ] |
Заголовок сообщения: | Проверка плоского режима |
Хочу проверить работу плоского режима в RM. Код: MOV EAX,10000h MOV EAX, DS:[EAX] В RM по идее должен словить #GP. Вопрос кто нибудь тестировал? Код ошибки кладётся или нет? |
Автор: | pavia [ 10 мар 2013, 09:06 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
BOCHS - тупит. То вызывает исключение, то не вызывает. Причём я так и не понял при каких условиях он вызывает. Когда не вызывает, то зацикливает адрес. |
Автор: | pavia [ 10 мар 2013, 12:37 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
Цитата: 00181381618e[CPU0 ] read_virtual_checks(): read beyond limit 00181391726e[CPU0 ] interrupt(): gate not present 00181391726e[CPU0 ] interrupt(): not accessible or not code segment cs=0x185e 00181391726e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08) 00181391726i[CPU0 ] CPU is in protected mode (active) 00181391726i[CPU0 ] CS.mode = 16 bit 00181391726i[CPU0 ] SS.mode = 16 bit 00181391726i[CPU0 ] | EAX=60000011 EBX=00000002 ECX=00090000 EDX=000ff000 00181391726i[CPU0 ] | ESP=00003df4 EBP=00003ffe ESI=000e0063 EDI=00000002 00181391726i[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if TF sf zf af PF cf 00181391726i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D 00181391726i[CPU0 ] | CS:2154( 0004| 0| 0) 00021540 0000ffff 0 0 00181391726i[CPU0 ] | DS:2386( 0005| 0| 0) 00023860 0000ffff 0 0 00181391726i[CPU0 ] | SS:23fd( 0005| 0| 0) 00023fd0 0000ffff 0 0 00181391726i[CPU0 ] | ES:2386( 0005| 0| 0) 00023860 0000ffff 0 0 00181391726i[CPU0 ] | FS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00181391726i[CPU0 ] | GS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00181391726i[CPU0 ] | EIP=00000da6 (00000da6) 00181391726i[CPU0 ] | CR0=0x60000011 CR2=0x00000000 00181391726i[CPU0 ] | CR3=0x00000000 CR4=0x00000000 00181391726e[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting Ни чего не понимаю. Ничего не понимаю такое впечатление что BOCHS решил подождать перехода в защищенный режим что-бы сгенерировать прерывание. |
Автор: | stlw [ 10 мар 2013, 14:01 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
Если бежишь в 16-bit режиме то по умолчанию addr_size=16 бит и все виртуальные адреса обрезаются до 16-бит. Чтобы адрес был 32 бит нужно руками дописать asize prefix 0x67. А выборочный copy-paste сообщений об ошибках это вообще жесть Где инструкция которую пытась выполнить и которая вызвала исключение ? Она в логах ровно на одну строчку ниже, сразу после "exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting" Бокс конечно не идеален, но пока нет никого ближе чем он к реальному железу. Кстати, если у тебя есть тест который выполняется по разному на Боксе и на реальном железе - открой баг в Бокс и его пофиксят. Станислав |
Автор: | pavia [ 10 мар 2013, 21:40 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
Ещё одна ошибка. Но тут я так и не могу понять - кто виноват?! Я так и не понял как чтение может изменить состояние системы(BOCHS+MS DOS+Мой код) Весь свой код не привожу большой. Но опытном путём выяснил что если вызывается вот этот участок то система зависает. Код: ReadFWord: PUSH BP MOV BP,SP XOR EAX,EAX MOV AX,[bp+8]; SHL EAX,16 MOV AX,[bp+6]; MOV AX,FS:[EAX] POP BP RETF 4 Есть вот такой вот безобидный код. Но он вешает DOS. Логи. Код: C:\Program Files\Bochs-2.5.1>cd "C:\Program Files\Bochs-2.5.1\dlxlinux" C:\Program Files\Bochs-2.5.1\dlxlinux>..\bochsdbg -q -f bochsrc.bxrc ======================================================================== Bochs x86 Emulator 2.5.1 Built from SVN snapshot on January 6, 2012 Compiled on Jan 6 2012 at 21:37:53 ======================================================================== 00000000000i[ ] reading configuration from bochsrc.bxrc 00000000000i[ ] Stopping on magic break points 00000000000i[ ] installing win32 module as the Bochs GUI 00000000000i[ ] using log file bochsout.txt Next at t=0 (0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ; ea5b e000f0 <bochs:1> c Next at t=86040964 (0) [0x00000000000fff53] f000:ff53 (unk. ctxt): iret ; cf <bochs:2> s Next at t=86040965 (0) [0x0000000000000073] 0000:0073 (unk. ctxt): lock push bx ; f053 <bochs:3> Next at t=86040966 (0) [0x00000000000fff53] f000:ff53 (unk. ctxt): iret ; cf <bochs:4> (0).[86040966] [0x00000000000fff53] f000:ff53 (unk. ctxt): iret ; cf # In bx_win32_gui_c::exit(void)! Bochs is exiting. Press ENTER when you're ready to close this window. Код: 00000000000i[ ] Bochs x86 Emulator 2.5.1
00000000000i[ ] Built from SVN snapshot on January 6, 2012 00000000000i[ ] Compiled on Jan 6 2012 at 21:37:53 00000000000i[ ] System configuration 00000000000i[ ] processors: 1 (cores=1, HT threads=1) 00000000000i[ ] A20 line support: yes 00000000000i[ ] IPS is set to 4000000 00000000000i[ ] CPU configuration 00000000000i[ ] level: 6 00000000000i[ ] SMP support: no 00000000000i[ ] APIC support: xapic 00000000000i[ ] FPU support: yes 00000000000i[ ] MMX support: yes 00000000000i[ ] 3dnow! support: no 00000000000i[ ] SEP support: yes 00000000000i[ ] SSE support: sse2 00000000000i[ ] XSAVE support: no 00000000000i[ ] AES support: no 00000000000i[ ] MOVBE support: no 00000000000i[ ] x86-64 support: yes 00000000000i[ ] 1G paging support: no 00000000000i[ ] MWAIT support: yes 00000000000i[ ] Optimization configuration 00000000000i[ ] RepeatSpeedups support: yes 00000000000i[ ] Fast function calls: yes 00000000000i[ ] Handlers Chaining speedups: no 00000000000i[ ] Devices configuration 00000000000i[ ] NE2000 support: yes 00000000000i[ ] PCI support: yes, enabled=yes 00000000000i[ ] SB16 support: yes 00000000000i[ ] USB support: yes 00000000000i[ ] VGA extension support: vbe cirrus 00000000000i[MEM0 ] allocated memory at 02F60020. after alignment, vector=02F61000 00000000000i[MEM0 ] 32,00MB 00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32 00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('../BIOS-bochs-latest') 00000000000i[CMOS ] Using local time for initial clock 00000000000i[CMOS ] Setting initial clock to: Sun Mar 10 22:30:10 2013 (time0=1362940210) 00000000000i[DMA ] channel 4 used by cascade 00000000000i[DMA ] channel 2 used by Floppy Drive 00000000000i[FDD ] fd0: 'C:\Program Files\Bochs-2.5.1\dlxlinux\DosBoot.IMA' ro=0, h=2,t=80,spt=18 00000000000i[FDD ] tried to open 'floppyb.img' read/write: No such file or directory 00000000000i[FDD ] tried to open 'floppyb.img' read only: No such file or directory 00000000000i[PCI ] 440FX Host bridge present at device 0, function 0 00000000000i[PCI ] PIIX3 PCI-to-ISA bridge present at device 1, function 0 00000000000i[MEM0 ] Register memory access handlers: 0x00000000000a0000 - 0x00000000000bffff 00000000000i[WGUI ] Desktop Window dimensions: 1280 x 800 00000000000i[WGUI ] Number of Mouse Buttons = 5 00000000000i[WGUI ] IME disabled 00000000000i[VGA ] interval=200000 00000000000i[MEM0 ] Register memory access handlers: 0x00000000e0000000 - 0x00000000e0ffffff 00000000000i[BXVGA] VBE Bochs Display Extension Enabled 00000000000i[MEM0 ] rom at 0xc0000/41472 ('../VGABIOS-lgpl-latest') 00000000000i[ ] init_dev of 'acpi' plugin device by virtual method 00000000000i[PCI ] ACPI Controller present at device 1, function 3 00000000000i[ ] init_dev of 'unmapped' plugin device by virtual method 00000000000i[ ] init_dev of 'biosdev' plugin device by virtual method 00000000000i[ ] init_dev of 'speaker' plugin device by virtual method 00000000000i[ ] init_dev of 'extfpuirq' plugin device by virtual method 00000000000i[ ] init_dev of 'gameport' plugin device by virtual method 00000000000i[ ] init_dev of 'iodebug' plugin device by virtual method 00000000000i[ ] init_dev of 'ioapic' plugin device by virtual method 00000000000i[IOAP ] initializing I/O APIC 00000000000i[MEM0 ] Register memory access handlers: 0x00000000fec00000 - 0x00000000fec00fff 00000000000i[ ] init_dev of 'keyboard' plugin device by virtual method 00000000000i[KBD ] will paste characters every 1000 keyboard ticks 00000000000i[ ] init_dev of 'harddrv' plugin device by virtual method 00000000000i[HD ] HD on ata0-0: 'D:\boot_5\HD10qm.raw', 'flat' mode 00000000000i[IMG ] hd_size: 10485760 00000000000i[HD ] ata0-0: using specified geometry: CHS=63/16/16 00000000000i[HD ] ata0-0: extra data outside of CHS address range 00000000000i[HD ] translation on ata0-0 set to 'none' 00000000000i[HD ] Using boot sequence floppy, none, none 00000000000i[HD ] Floppy boot signature check is enabled 00000000000i[ ] init_dev of 'pci_ide' plugin device by virtual method 00000000000i[PCI ] PIIX3 PCI IDE controller present at device 1, function 1 00000000000i[ ] init_dev of 'serial' plugin device by virtual method 00000000000i[SER ] com1 at 0x03f8 irq 4 00000000000i[ ] init_dev of 'parallel' plugin device by virtual method 00000000000i[PAR ] parallel port 1 at 0x0378 irq 7 00000000000i[ ] register state of 'acpi' plugin device by virtual method 00000000000i[ ] register state of 'unmapped' plugin device by virtual method 00000000000i[ ] register state of 'biosdev' plugin device by virtual method 00000000000i[ ] register state of 'speaker' plugin device by virtual method 00000000000i[ ] register state of 'extfpuirq' plugin device by virtual method 00000000000i[ ] register state of 'gameport' plugin device by virtual method 00000000000i[ ] register state of 'iodebug' plugin device by virtual method 00000000000i[ ] register state of 'ioapic' plugin device by virtual method 00000000000i[ ] register state of 'keyboard' plugin device by virtual method 00000000000i[ ] register state of 'harddrv' plugin device by virtual method 00000000000i[ ] register state of 'pci_ide' plugin device by virtual method 00000000000i[ ] register state of 'serial' plugin device by virtual method 00000000000i[ ] register state of 'parallel' plugin device by virtual method 00000000000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called 00000000000i[CPU0 ] cpu hardware reset 00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000 00000000000i[CPU0 ] CPUID[0x00000000]: 00000005 756e6547 6c65746e 49656e69 00000000000i[CPU0 ] CPUID[0x00000001]: 00000633 00010800 00002008 0fcbfbff 00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x00000003]: 00000000 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x00000004]: 00000000 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x00000005]: 00000040 00000040 00000003 00000020 00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000101 2a100000 00000000000i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020 00000000000i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75 00000000000i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020 00000000000i[CPU0 ] CPUID[0x80000005]: 01ff01ff 01ff01ff 40020140 40020140 00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000 00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x80000008]: 00003028 00000000 00000000 00000000 00000000000i[ ] reset of 'acpi' plugin device by virtual method 00000000000i[ ] reset of 'unmapped' plugin device by virtual method 00000000000i[ ] reset of 'biosdev' plugin device by virtual method 00000000000i[ ] reset of 'speaker' plugin device by virtual method 00000000000i[ ] reset of 'extfpuirq' plugin device by virtual method 00000000000i[ ] reset of 'gameport' plugin device by virtual method 00000000000i[ ] reset of 'iodebug' plugin device by virtual method 00000000000i[ ] reset of 'ioapic' plugin device by virtual method 00000000000i[ ] reset of 'keyboard' plugin device by virtual method 00000000000i[ ] reset of 'harddrv' plugin device by virtual method 00000000000i[ ] reset of 'pci_ide' plugin device by virtual method 00000000000i[ ] reset of 'serial' plugin device by virtual method 00000000000i[ ] reset of 'parallel' plugin device by virtual method 00000000000i[ ] set SIGINT handler to bx_debug_ctrlc_handler 00000004855i[BIOS ] $Revision: 10789 $ $Date: 2011-11-24 17:03:51 +0100 (Do, 24. Nov 2011) $ 00000319062i[KBD ] reset-disable command received 00000321808i[BIOS ] Starting rombios32 00000322255i[BIOS ] Shutdown flag 0 00000322865i[BIOS ] ram_size=0x02000000 00000323300i[BIOS ] ram_end=32MB 00000364042i[BIOS ] Found 1 cpu(s) 00000380296i[BIOS ] bios_table_addr: 0x000fbde8 end=0x000fcc00 00000380399i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) 00000708093i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) 00000800000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8 00001036023i[P2I ] PCI IRQ routing: PIRQA# set to 0x0b 00001036044i[P2I ] PCI IRQ routing: PIRQB# set to 0x09 00001036065i[P2I ] PCI IRQ routing: PIRQC# set to 0x0b 00001036086i[P2I ] PCI IRQ routing: PIRQD# set to 0x09 00001036096i[P2I ] write: ELCR2 = 0x0a 00001036880i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a 00001044587i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600 00001046902i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601 00001049056i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101 00001049291i[PIDE ] new BM-DMA address: 0xc000 00001049925i[BIOS ] region 4: 0x0000c000 00001051990i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680 00001052232i[ACPI ] new irq line = 11 00001052244i[ACPI ] new irq line = 9 00001052275i[ACPI ] new PM base address: 0xb000 00001052289i[ACPI ] new SM base address: 0xb100 00001052317i[PCI ] setting SMRAM control register to 0x4a 00001216408i[CPU0 ] Enter to System Management Mode 00001216418i[CPU0 ] RSM: Resuming from System Management Mode 00001380436i[PCI ] setting SMRAM control register to 0x0a 00001389197i[BIOS ] MP table addr=0x000fbec0 MPC table addr=0x000fbdf0 size=0xd0 00001391050i[BIOS ] SMBIOS table addr=0x000fbed0 00001393276i[BIOS ] ACPI tables: RSDP addr=0x000fbff0 ACPI DATA addr=0x01ff0000 size=0x988 00001396540i[BIOS ] Firmware waking vector 0x1ff00cc 00001397888i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) 00001398630i[BIOS ] bios_table_cur_addr: 0x000fc014 00001526248i[VBIOS] VGABios $Id: vgabios.c,v 1.75 2011/10/15 14:07:21 vruppert Exp $ 00001526319i[BXVGA] VBE known Display Interface b0c0 00001526351i[BXVGA] VBE known Display Interface b0c5 00001529276i[VBIOS] VBE Bios $Id: vbe.c,v 1.64 2011/07/19 18:25:05 vruppert Exp $ 00001875251i[BIOS ] ata0-0: PCHS=63/16/16 translation=none LCHS=63/16/16 00005755511i[BIOS ] IDE time out 00017997728i[BIOS ] Booting from 0000:7c00 00079647758i[BIOS ] int13_cdrom: function 08, ELDL out of range ef 00080384011i[CPU0 ] LOCK prefix unallowed (op1=0x53, modrm=0x00) 00080384015i[CPU0 ] LOCK prefix unallowed (op1=0x53, modrm=0x00) 00086040803i[ ] Ctrl-C detected in signal handler. 00086040966i[ ] Ctrl-C detected in signal handler. 00086040966i[ ] dbg: Quit 00086040966i[CPU0 ] CPU is in real mode (active) 00086040966i[CPU0 ] CS.mode = 16 bit 00086040966i[CPU0 ] SS.mode = 16 bit 00086040966i[CPU0 ] | EAX=534d0000 EBX=00008651 ECX=00000000 EDX=534d3c00 00086040966i[CPU0 ] | ESP=000008f0 EBP=000013ac ESI=000e0000 EDI=000000b0 00086040966i[CPU0 ] | IOPL=3 id vip vif ac vm rf NT of df if tf SF zf AF pf CF 00086040966i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D 00086040966i[CPU0 ] | CS:f000( 0004| 0| 0) 000f0000 0000ffff 0 0 00086040966i[CPU0 ] | DS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00086040966i[CPU0 ] | SS:0116( 0005| 0| 0) 00001160 0000ffff 0 0 00086040966i[CPU0 ] | ES:0116( 0005| 0| 0) 00001160 0000ffff 0 0 00086040966i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 00086040966i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 00086040966i[CPU0 ] | EIP=0000ff53 (00000073) 00086040966i[CPU0 ] | CR0=0x60000010 CR2=0x00000000 00086040966i[CPU0 ] | CR3=0x00000000 CR4=0x00000000 00086040966i[CMOS ] Last time is 1362940231 (Sun Mar 10 22:30:31 2013) 00086040966i[CTRL ] quit_sim called with exit code 0 |
Автор: | stlw [ 11 мар 2013, 00:17 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
Код: Next at t=86040965 (0) [0x0000000000000073] 0000:0073 (unk. ctxt): lock push bx ; f053 В жизни не поверю, что это реальный код инструкции написанный в здравом уме и твердой памяти. Эта инструкция вызывает #UD и началось это тут: Код: 00080384011i[CPU0 ] LOCK prefix unallowed (op1=0x53, modrm=0x00) но это уже тоже поздно, сломал ты все гораздо раньше и тут уже бежить по garbage коду. очень похоже на разружение стека и возврат куда-то на левый адрес Станислав |
Автор: | pavia [ 11 мар 2013, 05:34 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
Вот параметры с которыми вызываю DOS. В первом случае падает, во втором нет. Как видно параметры одинаковы. Единственное, что не проверил это если в памяти что-то побилось. Но мой код только читает и не пишет! Есть идеи что проверить? Падает строчек через 720 если трейсить со всеми вхождениями. Код: C:\Program Files\Bochs-2.5.1>cd "C:\Program Files\Bochs-2.5.1\dlxlinux" C:\Program Files\Bochs-2.5.1\dlxlinux>..\bochsdbg -q -f bochsrc.bxrc ======================================================================== Bochs x86 Emulator 2.5.1 Built from SVN snapshot on January 6, 2012 Compiled on Jan 6 2012 at 21:37:53 ======================================================================== 00000000000i[ ] reading configuration from bochsrc.bxrc 00000000000i[ ] Stopping on magic break points 00000000000i[ ] installing win32 module as the Bochs GUI 00000000000i[ ] using log file bochsout.txt Next at t=0 (0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ; ea5b e000f0 <bochs:1> c Next at t=147538254 (0) [0x00000000000fff53] f000:ff53 (unk. ctxt): iret ; cf <bochs:2> c Next at t=212800000 (0) [0x00000000000ffe8d] f000:fe8d (unk. ctxt): call .-21510 (0x000faa8a) ; e8fa ab <bochs:3> modebp mode switch break enabled <bochs:4> c (0) Caught mode switch breakpoint switching to 'protected mode' Next at t=238098807 (0) [0x0000000000021f0a] 2123:0000000000000cda (unk. ctxt): mov bx, 0x0010 ; bb1000 <bochs:5> x 0x84 [bochs]: 0x0000000000000084 <bogus+ 0>: 0x1b17048b <bochs:6> c (0) Caught mode switch breakpoint switching to 'real mode' Next at t=238098812 (0) [0x0000000000021f16] 2123:0ce6 (unk. ctxt): call .-177 (0x00021e68) ; e84f ff <bochs:7> b 0x1b17:0x048b <bochs:8> c (0) Breakpoint 1, 0x000000000001b5fb in ?? () Next at t=238711927 (0) [0x000000000001b5fb] 1b17:048b (unk. ctxt): cmp ah, 0x4b ; 80fc 4b <bochs:9> r rax: 0x00000000_534d3d00 rcx: 0x00000000_00000000 rdx: 0x00000000_534d3cf5 rbx: 0x00000000_00003be6 rsp: 0x00000000_00003be2 rbp: 0x00000000_00003bea rsi: 0x00000000_000e3c03 rdi: 0x00000000_00003cf4 r8 : 0x00000000_00000000 r9 : 0x00000000_00000000 r10: 0x00000000_00000000 r11: 0x00000000_00000000 r12: 0x00000000_00000000 r13: 0x00000000_00000000 r14: 0x00000000_00000000 r15: 0x00000000_00000000 rip: 0x00000000_0000048b eflags 0x00007046: id vip vif ac vm rf NT IOPL=3 of df if tf sf ZF af PF cf <bochs:10> sreg es:0x23d5, dh=0x00009302, dl=0x3d50ffff, valid=7 Data segment, base=0x00023d50, limit=0x0000ffff, Read/Write, Accessed cs:0x1b17, dh=0x00009301, dl=0xb170ffff, valid=1 Data segment, base=0x0001b170, limit=0x0000ffff, Read/Write, Accessed ss:0x23d5, dh=0x00009302, dl=0x3d50ffff, valid=7 Data segment, base=0x00023d50, limit=0x0000ffff, Read/Write, Accessed ds:0x23d5, dh=0x00009302, dl=0x3d50ffff, valid=1 Data segment, base=0x00023d50, limit=0x0000ffff, Read/Write, Accessed fs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=3 Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed gs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=1 Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed ldtr:0x0000, dh=0x00008200, dl=0x0000ffff, valid=1 tr:0x0000, dh=0x00008b00, dl=0x0000ffff, valid=1 gdtr:base=0x00000000000235e2, limit=0x1f idtr:base=0x0000000000000000, limit=0x3ff <bochs:11> ======================================================== Код: mode switch break enabled
<bochs:22> c (0) Caught mode switch breakpoint switching to 'protected mode' Next at t=482164769 (0) [0x0000000000021e60] 2123:0000000000000c30 (unk. ctxt): mov bx, 0x0010 ; bb1000 <bochs:23> c (0) Caught mode switch breakpoint switching to 'real mode' Next at t=482164774 (0) [0x0000000000021e6c] 2123:0c3c (unk. ctxt): call .-177 (0x00021dbe) ; e84f ff <bochs:24> b 0x1b17:0x048b <bochs:25> c (0) Breakpoint 2, 0x000000000001b5fb in ?? () Next at t=482946496 (0) [0x000000000001b5fb] 1b17:048b (unk. ctxt): cmp ah, 0x4b ; 80fc 4b <bochs:26> reg rax: 0x00000000_534d3d00 rcx: 0x00000000_00000000 rdx: 0x00000000_534d3cf5 rbx: 0x00000000_00003be6 rsp: 0x00000000_00003be2 rbp: 0x00000000_00003bea rsi: 0x00000000_000e3c03 rdi: 0x00000000_00003cf4 r8 : 0x00000000_00000000 r9 : 0x00000000_00000000 r10: 0x00000000_00000000 r11: 0x00000000_00000000 r12: 0x00000000_00000000 r13: 0x00000000_00000000 r14: 0x00000000_00000000 r15: 0x00000000_00000000 rip: 0x00000000_0000048b eflags 0x00007046: id vip vif ac vm rf NT IOPL=3 of df if tf sf ZF af PF cf <bochs:27> sreg es:0x23ca, dh=0x0000f302, dl=0x3ca0ffff, valid=7 Data segment, base=0x00023ca0, limit=0x0000ffff, Read/Write, Accessed cs:0x1b17, dh=0x00009301, dl=0xb170ffff, valid=1 Data segment, base=0x0001b170, limit=0x0000ffff, Read/Write, Accessed ss:0x23ca, dh=0x00009302, dl=0x3ca0ffff, valid=7 Data segment, base=0x00023ca0, limit=0x0000ffff, Read/Write, Accessed ds:0x23ca, dh=0x0000f302, dl=0x3ca0ffff, valid=1 Data segment, base=0x00023ca0, limit=0x0000ffff, Read/Write, Accessed fs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=1 Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed gs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=1 Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed ldtr:0x0168, dh=0x00008210, dl=0xb1a003ff, valid=1 tr:0x0158, dh=0x00008310, dl=0xa5a00bf9, valid=1 gdtr:base=0x0000000000023532, limit=0x1f idtr:base=0x0000000000000000, limit=0xffff <bochs:28> |
Автор: | pavia [ 12 мар 2013, 17:54 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
По поводу второй ошибке. Ошибка в моём коде. Но трудно уловимая. До сих пор ловлю. Знаю что надо юнит тесты писать и все функции тестировать. Просто дело до данных функций сейчас дошло и много надо проверить. |
Автор: | Himik [ 12 мар 2013, 18:40 ] |
Заголовок сообщения: | Re: Проверка плоского режима |
Попробуй в Bochs пошагово выполнить команды функции. Интересно и содержание регистра EAX. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |