Forth
http://fforum.winglion.ru/

Вопрос несведующего по архитектуре
http://fforum.winglion.ru/viewtopic.php?f=3&t=3231
Страница 1 из 2

Автор:  Victor__v [ Пн мар 25, 2019 19:38 ]
Заголовок сообщения:  Вопрос несведующего по архитектуре

Почему в архитектурах программно недоступен регистр потока выполнения (IP)? В чём причины.

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

Автор:  diver [ Пн мар 25, 2019 20:31 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

На каком уровне недоступен?

Автор:  Victor__v [ Пн мар 25, 2019 20:51 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

diver писал(а):
На каком уровне недоступен?

Любом.
Мне больше интересен уровень приложения.
Не очень я разбираюсь в арихитектурах.
Да и вообще доступность IP это норма или искллючение некоторых архитектур?

Автор:  mOleg [ Пн мар 25, 2019 22:27 ]
Заголовок сообщения:  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

Автор:  Victor__v [ Пн мар 25, 2019 23:32 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

В x86 IP/EIP/RIP программно не доступен. Такой регистр как бы есть но его как бы нет. И да всякие там каллы и джампы не считаются, поскольку они не позволяют аперировать апи непосредсвенно

Автор:  mOleg [ Пн мар 25, 2019 23:58 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Victor__v писал(а):
И да всякие там каллы и джампы не считаются, поскольку они не позволяют аперировать апи непосредсвенно

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

Автор:  Victor__v [ Вт мар 26, 2019 03:01 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

mOleg писал(а):
Victor__v писал(а):
И да всякие там каллы и джампы не считаются, поскольку они не позволяют аперировать апи непосредсвенно

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

Вариант на вскидку: создание лямбд внутри определения без абсолютной адресации.
Что-то вроде
...
jmp n
La:
... code
...
ret
n:
lea r1, [ip-La]

Автор:  mOleg [ Вт мар 26, 2019 08:25 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Victor__v писал(а):
Вариант на вскидку: создание лямбд внутри определения без абсолютной адресации.
Что-то вроде
...
jmp n
La:
... code
...
ret
n:
lea r1, [ip-La]

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

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

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

(если я правильно вас понял, конечно)

Автор:  Victor__v [ Вт мар 26, 2019 09:23 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Вот и вопрос нафига городить вызовы, если можно, манипулируя IP, без этого обойтись?

Автор:  Hishnik [ Вт мар 26, 2019 10:08 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

jmp eax это в принципе то же самое, что mov eip, eax. Еще в fasm есть символ $, который в процессе компиляции равен адресу компилируемой команды.

Автор:  Victor__v [ Вт мар 26, 2019 10:20 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Hishnik писал(а):
jmp eax это в принципе то же самое, что mov eip, eax. Еще в fasm есть символ $, который в процессе компиляции равен адресу компилируемой команды.

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

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

Я прекрасно знаю что EIP в x86 завуалирован. Вопрос почему. Причины, и везде ли так и почему, если да?

Автор:  mOleg [ Вт мар 26, 2019 11:07 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Victor__v писал(а):
Вот и вопрос нафига городить вызовы, если можно, манипулируя IP, без этого обойтись?

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

Автор:  Victor__v [ Вт мар 26, 2019 11:24 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

mOleg писал(а):
Victor__v писал(а):
Вот и вопрос нафига городить вызовы, если можно, манипулируя IP, без этого обойтись?

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


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

Автор:  KPG [ Вт мар 26, 2019 13:17 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Victor__v писал(а):
Почему в архитектурах программно недоступен регистр потока выполнения (IP)? В чём причины.

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

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

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

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

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

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

В PDP-11 был прямой доступ к IP (в MSP-430 тоже остался)

Автор:  mOleg [ Вт мар 26, 2019 16:28 ]
Заголовок сообщения:  Re: Вопрос несведующего по архитектуре

Victor__v писал(а):
Мне любопытно, почему в одних архитектурах IP доступен программно, а в других нет.

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

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

Вообще, логично стремление реализовать наиболее простым способом наиболее часто используемые операции в железе,
оставив за редкими командами более сложную многоопкодовую организацию.

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/