Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср июн 19, 2019 11:42

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Вопрос несведующего по архитектуре
СообщениеДобавлено: Пн май 27, 2019 07:44 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 544
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
mOleg писал(а):
Victor__v писал(а):
забавно, а как вы собираетесь оперировать IP? Что же нужно кроме JMP и подобного?
У PDP-11 режимы адресации были построены на оперировании IP , точнее он там PC назывался, хотя на самом деле был просто регистром общего назначения R7. Т.е. счетчик команд (да и указатель стека тоже) там были регистрами общего назначения ничем не отличимыми по применению от прочих. И это была реально великая идея необычайной красоты.

Например непосредственная адресация получалась частным случаем автоинкрементной прямой. Т.е. инструкция
MOV #5, @#VAR_1
была на самом деле
MOV (PC)+, @(PC)+ ; или что тоже самое MOV (R7)+, @(R7)+
.WORD 5 ; слово с константой 5
.WORD VAR_1 ; слово с адресом переменной VAR_1
Т.е. инструкция в одно слово к которой приставлялись еще два слова, она за счет автоинкремента PC их забирала как операнды и перескакивала.
А абсолютная (позиционно-зависимая) адресация была частным случаем автоинкрементной косвенной. Т.е. инструкция
MOV @#VAR_1, @#VAR_2
была на самом деле
MOV @(PC)+, @(PC)+ ; или что тоже самое MOV @(R7)+, @(R7)+
.WORD VAR_1 ; слово с адресом переменной VAR_1
.WORD VAR_2 ; слово с адресом переменной VAR_2
Опять инструкция в одно слово, которая забирает как операнды и перепрыгивает следующие два.
А относительная (позиционно-независимая) адресация была частным случаем индексной прямой опять таки с использованием в качестве РОН-а PC. В итоге где надо пишешь позиционно-зависимо (там где к фиксированным адресам железа обращаешься или к векторам прерываний), а в остальном позиционно-независимо. И тогда не требуется таблиц релокейшнов, код ведь итак перемещаемый.

В итоге в этой системе команд черезвычайно много получалось как частный случай. Например вызов СОпрограмм JSR PC, (SP)+ как частный случай. А на x86 какие-то извращения для этого потребуются.
Victor__v писал(а):
Я прекрасно знаю что EIP в x86 завуалирован. Вопрос почему. Причины, и везде ли так и почему, если да?
Не везде. А вот почему - детский вопрос. Потому-что x86 был сделан на коленке бездарностями. x86 был сделан с возможностью кросс-компиляции кода с Intel 8080 и от этого всю его рукожопость унаследовал, а Intel 8080 сделан переделкой Intel 8008, а Intel 8008 сделан переделкой Intel 4004, а 4004 сделан лишь бы в один чип запихать имея ввиду применение в линиях по разливу пива по бутылкам. К чему когда видишь уродство спрашивать почему ? Потому-что пиво по бутылкам разливается и зашибись.

Ну одно только то, что в инструкции ближнего call-а кодируется смещение относительно IP и это позиционно-независимо, а вот обращение прямой адресацией к переменным уже хрен вам - позиционно-зависимо. Ну что одного подхода придерживаться нельзя было ? Ведь толку от перемещаемости call-ов если код как целое все равно получается неперемещаемым ? Так-что не было тут никакого замысла. Сделали на коленке и первыми вылезли на рынок. Это и определило успех архитектуры. DEC со своей своим совершенным ПК Professional-350 (цветной дисплей уже тогда как EGA плюс операционка многозадачная и реального времени) чуть-чуть опоздала, пипл уже IBM PC закупил, начал требовать совместимого ПО и поезд ушел.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вопрос несведующего по архитектуре
СообщениеДобавлено: Пн май 27, 2019 10:13 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 544
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
mOleg писал(а):
а зачем плодить кучу команд (которых итак дофига)
От прямого доступа к IP количество команд не изменится никак (даже уменьшится ибо JMP окажется частным случаем MOV). Изменяется количество режимов адресации. Но (!) у PDP-11 их всего-то восемь и эти восемь реализуют то, чего в x86 и близко нет. Например дважды косвенность или отсутствие необходимости в отдельных строковых командах (MOV может иметь операнды с постинкрементом или предекрементом) и даже отсутствие необходимости в PUSH-ах и POP-ах. Потому-что стек организуется по любому РОНу и помещение в стек и извлечение оттуда это опять таки MOV с постинкрементом и предекрементом. И опять таки абсолютность адресации или относительность по желанию. И это все потому, что ровно половина из этих 8-и режимов адресации при указании в качестве РОНа счетчика команд дает нечто качественно новое. Итого формально режимов адресации кодируется восемь (три бита), но в понятиях программиста их уже двенадцать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вопрос несведующего по архитектуре
СообщениеДобавлено: Пн май 27, 2019 19:01 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6661
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Ортогональные архитектуры красивы и в целом удобны для программирования, это да. Однако счетчик инструкций с точки зрения схемы имеет очень даже отличающиеся свойства, конкретно он стоит совсем в другой цепочке (хотя это заметно в гарвардской архитектуре).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB