imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 02.06.2004, 02:57     # 1
metton
Guest
 
Сообщения: n/a

низкоуровневое программирование. вопросы

Собственно, пока возникло два вопроса.

1. На это я, порывшись в юзергайдах и книжках, уже ответ нашёл. Но на всякий случай хочу удостовериться в его правильности (он в скобках).

Связан ли объём адресуемой памяти процессора с параметром его разрядности? (нет, эти параметры независимы - разные наборы выводов)


2. Как запускаются приложения? Куда передаются данные бинарных файлов на выполнение? Инструкции, содержащиеся в бинарных файлах - это инструкции процессора или опеационной системы?
 
Старый 02.06.2004, 03:31     # 2
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
1. Zawisit ot arhitekturi.
2. Esli eto ne skript, a instrukcii processora, to i wipolnyaet ih processor.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 02.06.2004, 03:54     # 3
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
1.Ну, обьем адресуемой памяти процессора вроде как и связан с его разрядностью - если у процессора вегистры 16 бит, то и адресовать он сможет не больше 2^16=65536 байт. Для адресации используются
АДРЕСНЫЕ РЕГИСТРЫ

От размера этих регистров зависит размер памяти, к которой процессор может непосредственно адресоваться.

В процессорах первых поколений Intel 8088/8086 размер адресных регистров был 16 битов или 2 байта - максимальное число (номер байта в памяти), которое может быть записано в такой регистр, 2^16-1=65535 или, как его округленно называют - 64 килобайта

Но уже в компьютерах на базе этих процессоров возникла необходимость адресоваться к памяти размером 1024 килобайта (1 мегабайт). Чтобы выйти из затруднения с регистрами недостаточного размера, для адресации отвели 2 регистра и решили составлять адрес из 2-х частей : первая часть адреса содержит номер блока памяти как количество 16 байтовых ПАРАГРАФОВ, а вторая часть номер байта, отсчитанный от границы (начала) параграфа. Первую часть адреса назвали адресом СЕГМЕНТА, а вторую - СМЕЩЕНИЕМ внутри сегмента. Очевидно, что обе составляющие при 16-битовом регистре адреса не могут быть больше 65535

Максимальный адрес, по которому можно обратиться к памяти при такой 2-ступенчатой адресации FFFF0 или 65535 * 16 = 1048560.

Если все смещения будут максимальными - по 64 Кбайта -, то всего можно иметь до 16 сегментов. Процессоры следующих поколений имели уже более длинные регистры для хранения адресов - 80286 использует 24 битовые и позволяет адресовать напрямую до 16 мегабайт, а 80386 имеет 32-битовые регистры и может адресовать до 4 Гигабайт

2.Как уже говорилось в предыдущих темах, ассемблер заменяет аббревиатурами команды процессора.

Последний раз редактировалось Slanj; 02.06.2004 в 05:34.
Slanj вне форума  
Старый 02.06.2004, 04:02     # 4
metton
Guest
 
Сообщения: n/a

Цитата:
Slanj:
Максимальный адрес, по которому можно обратиться к памяти при такой 2-ступенчатой адресации FFFF0 или 65535 * 16 = 1048560
Вот тут не понял. Можно пояснить к чему относятся операнды?

И что такое параграф и чем он отличается от сегмента?

Цитата:
Slanj:
Если все смещения будут максимальными - по 64 Кбайта -, то всего можно иметь до 16 сегментов
Где до 16 сегментов?
 
Старый 02.06.2004, 04:25     # 5
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
сегмент:смещение

Смотри, у тебя первая часть - адрес сегмента памяти , измеряется в параграфах, тоесть сколькото раз по 16. Наприме, если сегмент равен 34, то реальный адрес, на который он указывает = 34*16=544. А смещение измеряется для более точного указания в байтах, так что если оно будет равно 7, то весь адрес, вычисляемый по формуле сегмент:смещение будет равен 544+7=551 байт.
Речь идет об оперативной памяти.

Последний раз редактировалось Slanj; 02.06.2004 в 04:38.
Slanj вне форума  
Старый 02.06.2004, 04:38     # 6
metton
Guest
 
Сообщения: n/a

Цитата:
Slanj:
Наприме, если сегмент равен 34, то реальный адрес, на который он указывает = 34*16=544
Тут 34, как понимаю, номер СЛОВА (2 байта; оно же ПАРАГРАФ???)
Но ведь в примере
Цитата:
65535 * 16 = 1048560
65535 БАЙТ, а не СЛОВ(2 байта)
 
Старый 02.06.2004, 04:47     # 7
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
65535 - это максимальный размер числа в адресном регистре. А в этом регистре, как мы знаем каждая единица - это один параграф(сделано было, чтобы больше можно было адресовать). А теперь помнож 65535 - количество единиц на их значение 16 и получится 1МБ

Последний раз редактировалось Slanj; 02.06.2004 в 06:02.
Slanj вне форума  
Старый 02.06.2004, 04:52     # 8
metton
Guest
 
Сообщения: n/a

Цитата:
Slanj:
адресных регистров был 16 битов или 2 байта - максимальное число (номер байта в памяти), которое может быть записано в такой регистр, 2^16-1=65535
Не, ну тут же явно 2 байта! (а не СЛОВА!)
Или эти примеры между собой не связаны?
 
Старый 02.06.2004, 05:01     # 9
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
2 байта это и есть слово. В начале для адресации использовали 1 регистр, но его оказалось мало, так что потом начали использовать 2 регистра и сегментную модель памяти, потом регистры начали увеличивать - 16 - 32 - 64.
Slanj вне форума  
Старый 02.06.2004, 05:53     # 10
basturd
Junior Member
 
Регистрация: 03.06.2003
Сообщения: 167

basturd Путь к славе только начался
Чего-то тут с этой русской терминологией можно запутаться.

Неважно. Не знаю там где как, но на PowerPC расклад такой:

2 bytes - halfword
4 bytes - word
8 bytes - double word
16 bytes - quad word

Цитата:
Сообщение от Slanj
Для адресации используются
АДРЕСНЫЕ РЕГИСТРЫ
В RISC архитектурах не существует понятия адресных регистров. Две главные группы регистров это: GPR (general purpose registers) and FPR (floating-point registers). Операции с адресами происходят через GRP. Поэтому в 32-битных процессорах, приложения могут адресовать максимум 2^32 bytes, в 64-битных - 2^64. Но это не означает что максимальный объем физической памяти, который могут адресовать эти процессоры такой же.
basturd вне форума  
Старый 02.06.2004, 12:20     # 11
metton
Guest
 
Сообщения: n/a

Slanj
Ты меня окончательно запутал!

В твоих примерах
34 (СЛОВ) * 16 = 544
65535 (БАЙТ) * 16 = 1048560

вот этого я не могу понять

basturd
Ээээ... А при чём тут PowerPC? Это ты чему противопоставляешь?
И что такое RISC, точнее каким он тут боком?
 
Старый 02.06.2004, 14:23     # 12
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
metton
RISC - это Reduced Instruction Set Computer. Извини, обьяснял ночью, башка не очень варила, сам немного запутался. Просто и правда в разных учебниках все по разному называют. Давай остановимся на Зубкове (его приоритет подтвердила моя преподша, содрав добрую половину своих лекций из его книги ). Просто сегментную часть адреса называют номером параграфа. Но это не суть делла важно, ты ведь в программах термины не будешь писать . Давай так, значение сегмента адреса в двоичном виде сдвигается на 4 бита влево (что равносильно уможению на 16), полученному адресу плюсуется адрес смещения и получается реальный адрес.
Slanj вне форума  
Старый 02.06.2004, 20:09     # 13
basturd
Junior Member
 
Регистрация: 03.06.2003
Сообщения: 167

basturd Путь к славе только начался
Цитата:
Сообщение от metton
Ээээ... А при чём тут PowerPC? Это ты чему противопоставляешь?
И что такое RISC, точнее каким он тут боком?
Ну ты тему общую поднял. Ну вот я и обобщил. В принципе архитектуры процессоров делятся на три основные группы: CISC, RISC, и EPIC. Некотрые вещи о которых здесь упоминали имеют отношение только к CISC.

1. CISC (Complex Instruction Set Computer) - например процессоры от AMD и Intel, включая все процессоры семейства x86.

2. RISC (Reduced Instruction Set Computer) - подавляющее большинство других архитектур, таких как IBM PowerPC (Power Mac G4/G5), Sun Sparc, DEC/Compaq Alpha, MIPS.

3. EPIC (Explicitly Parallel Instruction Computing) - чипы семейства Itanium от Intel
basturd вне форума  
Старый 03.06.2004, 01:43     # 14
metton
Guest
 
Сообщения: n/a

Slanj
Цитата:
Просто и правда в разных учебниках все по разному называют.
Вот, и я об этом же!

Цитата:
Давай так, значение сегмента адреса в двоичном виде сдвигается на 4 бита влево (что равносильно уможению на 16), полученному адресу плюсуется адрес смещения и получается реальный адрес
Вот как раз это мы сегодня с одногруппником пытались понять из Зубкова (в объяснении селекторов)! Долго пытались понять, зачем делить на 16, а затем смещать на 4 бита влево. Ведь это одно и то же! И пришли к тому, что это просто чтобы он (селектор) умещался в 16 бит. Правильно?
А селекторы хранятся в CS, DS, ES, FS, GS и SS, так? А где хранятся смещения?

и ещё, не понял эту фразу из Зубкова:
"...в защищённом режиме адрес начала для каждого сегмента хранится отдельно, так что возможно 2^46 (64 терабайта) различных логических адресов в формате сегмент:смещение (программа может определить до 16384 сегментов, каждый из которых до 4Гб)..."
Что значит - хранятся отдельно и откуда взялись эти числа?

И вот ещё, пока не забыл. Из Абеля.

Зачем нужен бит чётности и где он хранится? Почему число битов со значением 1 не должно быть чётно?

Книга вообще, наверное толковая, но в ней, как и во многих других такое количество неустоявшейся (и не объяснённой) терминологии, что очень многое приходится додумывать.


basturd
ОК, учту. А к какому типу относится ARM? Скорее всего, RISC?
 
Старый 03.06.2004, 02:16     # 15
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
Ну вот, мы уже идем на поправку! Ты немножко неправильно понял - селектор это есть адрес в памяти, деленный на 16. Как я уже говорил, это чтобы больше памяти адресовать. А чтобы получить реальный адрес этот селектор надо сместить на 4 бита влево или * 16. Как аналог, представь, в одном килограмме 1000 граммов, а в одном селекторе (или параграфе) 16 бит.
Cs, Ds, Es, Fs, Gs и Ss - это сегментные регистры, используются для хранения сегмента адреса.
Cs - сегмент кода - код программы
Ds - сегмент данных - сегментная часть адреса расположения данных программы
Ss - сегмент стека - адрес стека
Es, Fs, Gs - дополнительные сегментные регистры, могут содержатьсегментную часть любого адреса памяти.
Смещения хранятся в Bp, Sp, Si, Di
Bp - указатель базы - хранит смещение в области данных
Sp - смещение вершины стека
Si, Di - индекс источника, индекс приемника с ними и будешь скоро работать
Si - смещение данных, которые должны быть перемещены
Di - смещение, куда должны быть перемещены
Смещение следующей выполняемой команды всегда хранится в специальном регистре — Ip
Slanj вне форума  
Старый 03.06.2004, 02:29     # 16
metton
Guest
 
Сообщения: n/a

Slanj
Так, ну это я понял - смещаем селектор на 4 бита влево. На 4 бита - потому что в параграфе(слове) есть две позиции смещения - 2 байта?

Цитата:
Как я уже говорил, это чтобы больше памяти адресовать.
Так, что-то сейчас не соображу, как это помогает нам больше памяти адресовать?

И откуда всё-таки эти числа:
Цитата:
...в защищённом режиме адрес начала для каждого сегмента хранится отдельно, так что возможно 2^46 (64 терабайта) различных логических адресов в формате сегмент:смещение (программа может определить до 16384 сегментов, каждый из которых до 4Гб)...
Что значит - хранятся отдельно и откуда взялись эти числа?
 
Старый 03.06.2004, 02:53     # 17
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
Это помогает нам больше памяти адресовать, так как адрес теперь состоит из двух частей, в одной из которых единицы в 16 раз больше, а вторая часть для точного указания просто в единицах. Получается и адресовать мы сможем в 16 раз больше - 65535 (максимальное число, умещающееся в двух байтах) умножить 16 = 1МБ.
Насчет второго пока не задумывайся, а то опять запутаешся. Попробуй рассмотреть это немного позже.
P.S. Решил все же добавить. В защищенном режиме - 32 разрядные процессоры. Регистры у них по 32 бита. Теперь узнаем максимальное значение в 32 битах - 2^32 = 4ГБ. Программа может определить до 16384 сегментов. 4ГБ * 16384 как раз и равно 64 ТБ. Автор просто немного сократил эту операцию, оставив додумывать нам.

Последний раз редактировалось Slanj; 03.06.2004 в 03:26.
Slanj вне форума  
Старый 03.06.2004, 03:31     # 18
metton
Guest
 
Сообщения: n/a

Slanj
опять не всё понял...
Цитата:
так как адрес теберь состоит из двух частей
так, стоп! не сам адрес, а адрес, хранимый в регистрах?

Цитата:
в одной из которых единицы в 16 раз больше
это как??!

Цитата:
а вторая часть для точного указания просто в единицах
это понятно, это смещение. да?

Цитата:
65535 (максимальное число, умещающееся в двух байтах) умножить 16 = 1МБ
так, 2 байта - это на что в данном случае? На селектор или на номер сегмента?

чё-то щас туплю...
но я упорный - пока не разберусь, не успокоюсь!
 
Старый 03.06.2004, 03:42     # 19
Slanj
::VIP::
 
Аватар для Slanj
 
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670

Slanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj СэнсэйSlanj Сэнсэй
Да, мы с тобой я вижу тут долго сидеть будем. Но ничего, сам ассемблер хорошенько повторю.
1. Ну конечно, адрес, хранимый в регистрах, состоящий из сегмента и смещения.
2.Это я уже устал писать. В сегментном регистре каждая единица - это 16 бит.
3.Да, это смещение.
4.Умножается максимальное количество селекторов на их значение.

А упорство - это очень хорошая вещь, мне его очень часто не хватает
Slanj вне форума  
Старый 03.06.2004, 04:01     # 20
metton
Guest
 
Сообщения: n/a

Цитата:
в одной из которых единицы в 16 раз больше
Цитата:
2.Это я уже устал писать. В сегментном регистре каждая единица - это 16 бит.
так, а где у нас тогда единицы в 1 бит??!!

Цитата:
4.Умножается максимальное количество селекторов на их значение
так, понятно откуда берётся максимальное количество селекторов
непоятно, теперь не понятно, что значит значение селектора - 16

в общем, я пошёл. ещё раз перечитаю это раздел у Зубкова, Абеля и Петцольда, и, может быть, просветлюсь
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:26.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.