Автор Тема: непонятка с регистром GDTR x86.  (Прочитано 1770 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
решил я одну прожку пощупать в виртуальной машине Bochs. настроил ей оперативы 50Мб. сохраняю состяние машины, лезу в конфиг состояния и офигеваю:
  GDTR = {
    base = 0xc0261000
    limit = 0x00ff
  }
GDTR указывает на расположение таблицы дескрипторов выше 3Гб. как такое может быть, если системе назначено 50Мб ?
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Re: непонятка с регистром GDTR x86.
« Ответ #1 : 23/10/2015 22:17:49 »
Судя по микроскопическому размеру оперативы, ты никак не оставишь свою задумку. :)
А программы пишутся с багами,  предполагают, что ради того, чтобы программисты не оставались не у дел. ;)
Есть только  миг
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
Re: непонятка с регистром GDTR x86.
« Ответ #2 : 23/10/2015 22:32:03 »
всё замечательно работает, даже после сохранения и восстановления состояния. работает даже тупо копируя состояние на другой комп.
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Re: непонятка с регистром GDTR x86.
« Ответ #3 : 23/10/2015 22:35:26 »
Все программы делаются так, чтобы они работали, но и чтобы оставалось место для приложения рук.
По ссыле есть что-то хоть частично отвечающее на твой вопрос?
Есть только  миг
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
Re: непонятка с регистром GDTR x86.
« Ответ #4 : 23/10/2015 22:41:20 »
ссылка 12-го года. мне кажется за это время такой баг разрулили бы. но если чес, не совсем понял.
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Re: непонятка с регистром GDTR x86.
« Ответ #5 : 23/10/2015 22:53:18 »
Ну заведи там дискуссию. 51 штук описанных багов, из них почти все "pending", в статусе "open", один "accepted" и один "unread", и что это?
Есть только  миг
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
Re: непонятка с регистром GDTR x86.
« Ответ #6 : 23/10/2015 22:55:28 »
пока не вижу смысла. по - другому щупать буду. благо брэйк поинтов и остановка по чтению озу есть. хорошая виртуальная машина.
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
Re: непонятка с регистром GDTR x86.
« Ответ #7 : 23/10/2015 23:05:17 »
Ну заведи там дискуссию. 51 штук описанных багов, из них почти все "pending", в статусе "open", один "accepted" и один "unread", и что это?
ну, хоть 1 статус мне понятен: pending - не стал лезть в гугло переводчик, но на Win это обозначает "принято к исполнению, в работе, ошибок нет, но пока не закончено"
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн drfaust

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 2694
  • Похвалили: 81 раз(а)
  • Я не Шариков, просто судьба располосовала мой лоб.
  • Откуда: РФ, Лангепас, MSK+2 (UTC+5)
    • drfaust.asuscomm.com
Re: непонятка с регистром GDTR x86.
« Ответ #8 : 24/10/2015 00:14:26 »
С бошем не знаком, но сдаётся мне, что ему пофиг на твою указиловку в 50метров, выделить тебе он не даст более 50Мб - может кинуть 14й или какой другой эксцепшн .Но вот расположить их может в любом ему угодном месте 32битного линейного пространства.
Не кассами одними жив ЦТО ;-)
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
Re: непонятка с регистром GDTR x86.
« Ответ #9 : 24/10/2015 00:20:37 »
С бошем не знаком
дурное дело не хитрое - чик и познакомим.

пофиг на твою указиловку в 50метров, выделить тебе он не даст более 50Мб - может кинуть 14й или какой другой эксцепшн
машинка делает кошерный дамп озу размером в 50Мб - проверено в ida6-1 (даже загрузчик в 7C00 остался). в логе дебагера не видел исключений.
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн drfaust

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 2694
  • Похвалили: 81 раз(а)
  • Я не Шариков, просто судьба располосовала мой лоб.
  • Откуда: РФ, Лангепас, MSK+2 (UTC+5)
    • drfaust.asuscomm.com
Re: непонятка с регистром GDTR x86.
« Ответ #10 : 24/10/2015 00:24:28 »
машинка делает кошерный дамп озу размером в 50Мб - проверено в ida6-1 (даже загрузчик в 7C00 остался). в логе дебагера не видел исключений.
И какой размер дампа?
Не кассами одними жив ЦТО ;-)
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3313
  • Похвалили: 204 раз(а)
  • armвиль
Re: непонятка с регистром GDTR x86.
« Ответ #11 : 24/10/2015 00:28:44 »
И какой размер дампа?
дамп визуальный в консоли дебугера (трассировка каждой инструкции)- в файло чот не получается сохранить, да и зачем - пара гигов его получится минут за 5 ?
база иды 238 метров + 50 метров дампа. в архиве - 26 метров (238+50). есть желание посмотреть ? вышлю. bochs -последний, версии 2.6.8. win есно.
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн drfaust

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 2694
  • Похвалили: 81 раз(а)
  • Я не Шариков, просто судьба располосовала мой лоб.
  • Откуда: РФ, Лангепас, MSK+2 (UTC+5)
    • drfaust.asuscomm.com
Re: непонятка с регистром GDTR x86.
« Ответ #12 : 24/10/2015 02:46:39 »
...есть желание посмотреть ? вышлю. ...
Да не, как то... не сейчас. С бошем тоскливо, но он вроде "полный" эмуль....
Если на нём под DOS в реалмоде прокатит недокументированная интелом проверка определения 8086 от 80286 - тогда он меня может и заинтересует, а то под досбоксом и виртуалбоксом часто BC31 косячит
Проверка такая(через сохранение в стек флагов проца делается, но пример я нашел слишком длинный):
check_8086: 
        pushf                           ;save FLAGS
        pop     bx                      ;store FLAGS in BX
        mov     ax, 0fffh               ;clear bits 12-15
        and     ax, bx                  ;  in FLAGS
        push    ax                      ;store new FLAGS calue on stack
        popf                            ;replace current FLAGS value
        pushf                           ;set new flags
        pop     ax                      ;store new flags in AX
        and     ax, 0f000h              ;if bits 12-15 are set, then CPU
        cmp     ax, 0f000h              ;  is an 8086/8088
        mov     cpu_type, 0             ; save the CPU type
        je      end_get_cpuid
 
 
;
;       Intel 286 CPU check
;       Bits 12-15 are always clear on the Intel processor.
;
check_80286:
.286
        or      bx, 0f000h              ;try to set bits 12-15
        push    bx
        popf
        pushf
        pop     ax
        and     ax, 0f000h              ; if bits 12-15 are cleared,
                                        ;       CPU=Intel 286
        mov     cpu_type, 2             ; turn on Intel 286 Cpu flag
        jz      end_get_cpuid           ; if CPU is intel 286, check
                                        ; for Intel 287 math coprocessor
 
;       Intel386 CPU check
;       The AC bit (bit 18), is a new bit introduced in the EFLAGS
;       register on the Intel486 DX CPU to generate alignment faults.
;       This bit can not be set on the Intel386 CPU.
Не кассами одними жив ЦТО ;-)
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20