Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2018, 15:47   #1
Vantozik
Новичок
Джуниор
 
Регистрация: 04.06.2018
Сообщений: 4
Восклицание Дополнительные регистры в Debug 16-bit

Подобная тема уже была, но там ответа так никто и не дал. Задача: найти два регистра, не отображаемых в 16-битном дебаге, объяснить что это за регистры, как называются, чем занимаются и почему не выводятся (путём поисков нашёл, что это GS и FS, но по ним инфы не нарыл).
Прошу помощи, только что C и Паскаль сдавал, ночь не спал, голова не соображает, ничего найти в текстах того же Питера Абеля не могу.
Большущая просьба именно объяснить, а не скинуть ссыль на вики или подобное, очень надеюсь на помощь.
P.S. От вашей помощи зависит моя стипуха, так как это единственный предмет, который я не могу сдать в своей мухосранской шараге на 4/5 из-за преподши - маразматички и совершенно неинтересного содержания лекций.

Последний раз редактировалось Vantozik; 04.06.2018 в 16:00.
Vantozik вне форума Ответить с цитированием
Старый 04.06.2018, 16:01   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Vantozik Посмотреть сообщение
это GS и FS, но по ним инфы не нарыл
Цитата:
Начиная с микропроцессора 80386, появились два дополнительных регистра fs,gs (следующие буквы в латинском алфавите после e).

При использовании дополнительных сегментов данных их адреса требуется указывать с помощью специальных префиксов переопределения сегментов в команде (например, fs.
отсюда

Или даже поиск по форуму: http://www.programmersforum.ru/showthread.php?t=116961
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 04.06.2018, 18:00   #3
Vantozik
Новичок
Джуниор
 
Регистрация: 04.06.2018
Сообщений: 4
По умолчанию

Бабке, которая принимает экзамен, нужна точная инфа: почему эти регистры не использовались в 8086? Из-за особенностей архитектуры? Если да, то что за особенность и что за изменение этой самой архитектуры в 80386 позволило безболезненно добавить ещё 2 регистра?...
Vantozik вне форума Ответить с цитированием
Старый 04.06.2018, 18:05   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А почему мой старый телек не показывает цвет? Это ж легко...

А так можно долго рассуждать: как msw вдруг разросся до 8 регистров и почему в 8086 не использовались DRx.
p51x на форуме Ответить с цитированием
Старый 04.06.2018, 19:00   #5
Vantozik
Новичок
Джуниор
 
Регистрация: 04.06.2018
Сообщений: 4
По умолчанию

К сожалению, подобными рассуждениями я её не растрогаю, нужны именно факты.
Vantozik вне форума Ответить с цитированием
Старый 04.06.2018, 19:34   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Какие факты? Идет прогресс, технологии развиваются, процессоры улучшаются.
Вот добавились DRx регистры или SSE, или AVX, или ... какие факты вам нужны для обоснования этого?
p51x на форуме Ответить с цитированием
Старый 04.06.2018, 20:32   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Vantozik Посмотреть сообщение
Бабке, которая принимает экзамен, нужна точная инфа:
Сегментные регистры появились в 1978 году вместе с процессором i8086.
В то время их было всего 4:
Код:
CS - Code segment - кода;
DS - Data segment - данных;
SS - Stack segment - стека;
ES - Extra segment - дополнительный для данных;
Они определяют границы сегментов памяти ОЗУ.
Так.., адрес начала сегмента-кода находится в регистре(CS), сегмента-данных(DS) и т.д.
Под досом, для команд ассемблера существовали соглашения по умолчанию: адреса переходов вычислялись по регистру(CS), обращения к данным - по регистру(DS), а обращения к стеку – по регистру(SS).

Это был рассвет системы MS-DOS, и чтобы программистам было легче отлавливать в своих программах ошибки, был придуман упомянутый выше отладчик 'DEBUG'. Кстати, есть серьёзное предположение, что отладчики назвали так в честь жука (по анг.Bug), который залез в компьютер и чем-то нарушил его работу. Так появился De'Bug - убийца жуков, официальная поддержка которого в последующем была заброшена, хотя программистам идея понравилась и они стали развивать её сами.
--------------------------------

В 1982 году появился новый процессор i80286, который презентовал революционное решение - защищённый режим! Он был по-прежнему 16-битным, но уже в 1985 году превратился в 32-битный i80386 - первый достойный внимания процессор с адресацией памяти в 4Gb.

В 386-ом полностью была переработана модель памяти, для поддержки которой было добавлено свыше (!)200 новых регистров. Это регистры: управления процессором CR0-4, управления памятью GDTR/LDTR/IDTR/TR, огромное кол-во машинных MSR-регистров, Debug-регистры DR0-7, тестовые регистры TR3-7 и т.д. и т.п.

Вместе с дивизионом системных регистров, появились и 2 новых сегментных регистра GS/FS. Трудно предугадать, что двигало разработчиками, когда они давали названия этим регистрам (ведь нас там не было) - в отличии от основных, их литеры нигде не документированы. Однако в сети можно встретить довольно убедительный вариант - General Segment(GS). Второй(FS) добавили в нагрузку по-алфавиту, поэтому назначение их совпадают. Кстати, все сегментные регистры на самом деле не 16-битные, а 10-байтные, 8 из которых скрыты от программиста - в них загружаются дескрипторы из GDT.

Чистокровный отладчик MS-DEBUG появился на свет раньше процессора 386 с регистрами GS/FS, поэтому он и не видит их. Не понимает дебуг и новые инструкции, которыми природа щедро одарила 386. Однако существуют и 32-битные консольные отладчики, заточенные специально под i386+, например 'GRDB' от компании 'LADsoft'. Он как птица-говорун отличается от 'DEBUG' и знаком уже с FPU/PCI регистрами, с точками-останова(ВР), и имеет многие/другие вкусности. Одним словом, дебуг по сравнении с ним - полный отстой:
Код:
GRDB version 1.7 Copyright (c) LADsoft
History enabled

eax:00000000  ebx:00000000  ecx:00000000  edx:00000000  esi:00000000  edi:00000000
ebp:00000000  esp:000BFFEE  eip:00000100  eflags:000B0202  NV UP EI PL NZ NA PO NC
cs:0E87       ds: 0E87      ss:0E87       es:0E87       fs:0E87       gs:0E87  
;----------------
->?
a  [address]                   - assemble
b  [d][#]                      - Show breakpoint(s)
b  [d][-]#,addr[,r/w/x[,len]]  - set or clear a breakpoint
d  [start [,end]]              - dump memory
e  start [,list]               - examine memory
g  [=start] [,break]           - run from start (or pos) to break
h  val1 [+-*/] val2            - hex arithmetic
i[bwd]  port                   - read from port
l  [@] [-] [name[ command]]    - read from file
n  [s]                         - show fp regs/status
n  #, val                      - set value in an FP reg
o[bwd]  port,val               - write to port
p  [r]                         - step through
q                              - quit
r  [reg[:val]]                 - show/modify regs
t  [count]                     - step into
u  [start [,end]]              - unassemble
w  [@addr] [name] [,len]       - write to file
?                              - this help
??                             - help for extended commands
;----------------
->??
c  start,end,start2            - compare memory
f  start,end [,val]            - fill memory
m  source,end,dest             - move memory
s  start,end [,list]           - search for a byte pattern
xr drive: addr,start [,len]    - read logical disk sector
xw drive: addr,start [,len]    - write logical disk sector
y  pfa,reg[,val]               - read/[write] PCI reg
y? bus, dev, func              - get PFA from bus:dev:func
@  [a] [logfile]               - start/stop logging to a file
?i                             - view interrupt info
?m [x]                         - view arena tags
?o [+-option]                  - view/set options
?p                             - view program status
->
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 05.06.2018, 05:20   #8
D1973
Пользователь
 
Регистрация: 04.04.2018
Сообщений: 28
По умолчанию

Вот только что эта тема делает в разделе Delphi???
D1973 вне форума Ответить с цитированием
Старый 05.06.2018, 07:40   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Delphi - это девичья фамилия ассемблера ? Именно там у меня видится обсуждаемая тема - или только у меня ?
digitalis вне форума Ответить с цитированием
Старый 05.06.2018, 08:55   #10
Vantozik
Новичок
Джуниор
 
Регистрация: 04.06.2018
Сообщений: 4
По умолчанию

Новичок на форуме, особо в системе отзывов не разобрался, но хочу пожать руку R71MT за полный развёрнутый ответ на скомканно поставленный вопрос. Лучи добра тебе, друг.

Последний раз редактировалось Vantozik; 05.06.2018 в 08:59.
Vantozik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регистры pcmax Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 20.04.2018 03:20
Регистры olenka1808las Общие вопросы C/C++ 17 17.09.2013 18:19
Импорт 32-bit dll в 64-bit valchakov Общие вопросы Delphi 8 25.12.2009 15:18
Регистры Волк Microsoft Office Excel 9 08.04.2009 16:07
Регистры Манжосов Денис :) Помощь студентам 8 28.07.2008 12:48