Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 12:41

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Вопрос несведующего по архитектуре
Автор Сообщение
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Ортогональные архитектуры красивы и в целом удобны для программирования, это да. Однако счетчик инструкций с точки зрения схемы имеет очень даже отличающиеся свойства, конкретно он стоит совсем в другой цепочке (хотя это заметно в гарвардской архитектуре).
Сообщение Добавлено: Пн май 27, 2019 19:01
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
mOleg писал(а):
а зачем плодить кучу команд (которых итак дофига)
От прямого доступа к IP количество команд не изменится никак (даже уменьшится ибо JMP окажется частным случаем MOV). Изменяется количество режимов адресации. Но (!) у PDP-11 их всего-то восемь и эти восемь реализуют то, чего в x86 и близко нет. Например дважды косвенность или отсутствие необходимости в отдельных строковых командах (MOV может иметь операнды с постинкрементом или предекрементом) и даже отсутствие необходимости в PUSH-ах и POP-ах. Потому-что стек организуется по любому РОНу и помещение в стек и извлечение оттуда это опять таки MOV с постинкрементом и предекрементом. И опять таки абсолютность адресации или относительность по желанию. И это все потому, что ровно половина из этих 8-и режимов адресации при указании в качестве РОНа счетчика команд дает нечто качественно новое. Итого формально режимов адресации кодируется восемь (три бита), но в понятиях программиста их уже двенадцать.
Сообщение Добавлено: Пн май 27, 2019 10:13
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
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 закупил, начал требовать совместимого ПО и поезд ушел.
Сообщение Добавлено: Пн май 27, 2019 07:44
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Victor__v писал(а):
Мне любопытно, почему в одних архитектурах IP доступен программно, а в других нет.

Так он и доступен программно 8) только не так, как вам хочется 8)

Если брать набор команд MISC, то в нем, ясно, минимум необходимый.

Вообще, логично стремление реализовать наиболее простым способом наиболее часто используемые операции в железе,
оставив за редкими командами более сложную многоопкодовую организацию.
Сообщение Добавлено: Вт мар 26, 2019 16:28
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Victor__v писал(а):
Почему в архитектурах программно недоступен регистр потока выполнения (IP)? В чём причины.

Как я понял IP явно есть в ARM (даже в вики написано) и, кажется, в MIPS

Ответа: Tак звёзды сошлись! не достаточно? :)

Могут же быть ещё вопросы:

Почему столько разных архитектур процессоров/контроллеров?
Почему именно эта "архитектура" выиграла рыночное использование?
Почему производители не раскрывают полную информацию об своих изделиях без NDA?
...
и.т.д. и.т.п.

Скорее всего экономили на опкодах команд (может их уже не хватало) и упрощении схемотехники.
+ исторические реалии развития предыдущих уже зарекомендовавших в изделиях разработoк.

P.S. Intel 4004
Intel 4004 Instructions Set
Как разрабатывались первые микросхемы Intel

В PDP-11 был прямой доступ к IP (в MSP-430 тоже остался)
Сообщение Добавлено: Вт мар 26, 2019 13:17
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
mOleg писал(а):
Victor__v писал(а):
Вот и вопрос нафига городить вызовы, если можно, манипулируя IP, без этого обойтись?

а зачем плодить кучу команд (которых итак дофига) не особо нужных?
Вопрос дурацкий у вас. Метод решить проблему есть? - есть! зачем тогда что-то добавлять или менять?
Что вы хотите выиграть? (вместо пары опкодов один - это слишком мелко)


По порядку
В1) Зачем? Я и спрашиваю зачем. Вся тема об этом. Множество команд где? Тут про архитектуру процов в общем, а не только CISC
В2) Опять же вся тема об необходимости программного доступа к регистру IP. Ваш довод, думается мне, не прокатит в ARM)
В3) САУ хочу выиграть) Просто интересуюсь вопросом. Мне любопытно, почему в одних архитектурах IP доступен программно, а в других нет.
Сообщение Добавлено: Вт мар 26, 2019 11:24
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Victor__v писал(а):
Вот и вопрос нафига городить вызовы, если можно, манипулируя IP, без этого обойтись?

а зачем плодить кучу команд (которых итак дофига) не особо нужных?
Вопрос дурацкий у вас. Метод решить проблему есть? - есть! зачем тогда что-то добавлять или менять?
Что вы хотите выиграть? (вместо пары опкодов один - это слишком мелко)
Сообщение Добавлено: Вт мар 26, 2019 11:07
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Hishnik писал(а):
jmp eax это в принципе то же самое, что mov eip, eax. Еще в fasm есть символ $, который в процессе компиляции равен адресу компилируемой команды.

А если надо наоборот?
mov eax, eip

Это ж позволяет использовать относительную адресацию в большем кол-ве мест.
Вы ещё скажите, что можно так
: EIP R@ ;

Я прекрасно знаю что EIP в x86 завуалирован. Вопрос почему. Причины, и везде ли так и почему, если да?
Сообщение Добавлено: Вт мар 26, 2019 10:20
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
jmp eax это в принципе то же самое, что mov eip, eax. Еще в fasm есть символ $, который в процессе компиляции равен адресу компилируемой команды.
Сообщение Добавлено: Вт мар 26, 2019 10:08
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Вот и вопрос нафига городить вызовы, если можно, манипулируя IP, без этого обойтись?
Сообщение Добавлено: Вт мар 26, 2019 09:23
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Victor__v писал(а):
Вариант на вскидку: создание лямбд внутри определения без абсолютной адресации.
Что-то вроде
...
jmp n
La:
... code
...
ret
n:
lea r1, [ip-La]

что-то подобное у меня

а вообще делается с помощью
CALL n
тут данные или код

n: R>
т.е. сохраняем адрес возврата в стек возвратов, после чего оттуда его выгребаем.
Очень распространенная практика.

(если я правильно вас понял, конечно)
Сообщение Добавлено: Вт мар 26, 2019 08:25
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
mOleg писал(а):
Victor__v писал(а):
И да всякие там каллы и джампы не считаются, поскольку они не позволяют аперировать апи непосредсвенно

забавно, а как вы собираетесь оперировать IP? Что же нужно кроме JMP и подобного?

Вариант на вскидку: создание лямбд внутри определения без абсолютной адресации.
Что-то вроде
...
jmp n
La:
... code
...
ret
n:
lea r1, [ip-La]
Сообщение Добавлено: Вт мар 26, 2019 03:01
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Victor__v писал(а):
И да всякие там каллы и джампы не считаются, поскольку они не позволяют аперировать апи непосредсвенно

забавно, а как вы собираетесь оперировать IP? Что же нужно кроме JMP и подобного?
Сообщение Добавлено: Пн мар 25, 2019 23:58
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
В x86 IP/EIP/RIP программно не доступен. Такой регистр как бы есть но его как бы нет. И да всякие там каллы и джампы не считаются, поскольку они не позволяют аперировать апи непосредсвенно
Сообщение Добавлено: Пн мар 25, 2019 23:32
  Заголовок сообщения:  Re: Вопрос несведующего по архитектуре  Ответить с цитатой
Victor__v писал(а):
Почему в архитектурах программно недоступен регистр потока выполнения (IP)? В чём причины.

это почему же не доступен-то?
Вот, скажем команда Branch (т.е. jmp) по сути прямая загрузка адреса в IP, то же и с CALL и с RET происходит.
По сути вместо LD IP, ADDR пишем JMP ADDR.
Или что вы подразумеваете под недоступностью IP?
кстати, есть еще замечательная команда LITERAL, которая тоже к IP относиться

кроме того, сам IP не всегда нужен, а вот сохраненное его значение, которое доступно по R@ или R> в форте пользуется активно.
Ну, и еще, надо оговорить, что в разных типах ШК есть нюансы использования этого самого IP (который уже Interpretation pointer, а не instruction pointer )

Цитата:
Как я понял IP явно есть в ARM (даже в вики написано) и, кажется, в MIPS

Я не знаю такой архитектуры, гдеб не было IP
Сообщение Добавлено: Пн мар 25, 2019 22:27

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


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