OSDev

для всех
Текущее время: 27 апр 2024, 08:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Проверка плоского режима
СообщениеДобавлено: 09 мар 2013, 21:34 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Хочу проверить работу плоского режима в RM.
Код:
MOV EAX,10000h
MOV EAX, DS:[EAX]

В RM по идее должен словить #GP.
Вопрос кто нибудь тестировал?
Код ошибки кладётся или нет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 10 мар 2013, 09:06 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
BOCHS - тупит. То вызывает исключение, то не вызывает. Причём я так и не понял при каких условиях он вызывает. Когда не вызывает, то зацикливает адрес.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 10 мар 2013, 12:37 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
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 решил подождать перехода в защищенный режим что-бы сгенерировать прерывание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 10 мар 2013, 14:01 

Зарегистрирован: 12 май 2012, 14:02
Сообщения: 18
Если бежишь в 16-bit режиме то по умолчанию addr_size=16 бит и все виртуальные адреса обрезаются до 16-бит.
Чтобы адрес был 32 бит нужно руками дописать asize prefix 0x67.

А выборочный copy-paste сообщений об ошибках это вообще жесть :)
Где инструкция которую пытась выполнить и которая вызвала исключение ?
Она в логах ровно на одну строчку ниже, сразу после "exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting"

Бокс конечно не идеален, но пока нет никого ближе чем он к реальному железу.
Кстати, если у тебя есть тест который выполняется по разному на Боксе и на реальном железе - открой баг в Бокс и его пофиксят.

Станислав


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 10 мар 2013, 21:40 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Ещё одна ошибка. Но тут я так и не могу понять - кто виноват?!
Я так и не понял как чтение может изменить состояние системы(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



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 11 мар 2013, 00:17 

Зарегистрирован: 12 май 2012, 14:02
Сообщения: 18
Код:
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 коду.
очень похоже на разружение стека и возврат куда-то на левый адрес

Станислав


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 11 мар 2013, 05:34 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Вот параметры с которыми вызываю 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>



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 12 мар 2013, 17:54 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
По поводу второй ошибке. Ошибка в моём коде. Но трудно уловимая. До сих пор ловлю.
Знаю что надо юнит тесты писать и все функции тестировать. Просто дело до данных функций сейчас дошло и много надо проверить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка плоского режима
СообщениеДобавлено: 12 мар 2013, 18:40 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Попробуй в Bochs пошагово выполнить команды функции. Интересно и содержание регистра EAX.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB