Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:51

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: распределение регистров
СообщениеДобавлено: Пт апр 18, 2008 14:37 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
тему поднимаю из-за данной цитаты:
chess писал(а):
Вершина стека параметров в VFX как и в SWIFT-е в EBX, а не в EAX (SPF). Это рациональней, так как аккумулятор свободен и с ним можно работать более короткими и быстрыми командами не затрагивая стек параметров.


так в каком же лучше регистре кешировать верхний элемент стека?
у меня сейчас все выглядит следующим образом:

\ -- основные регистры ------------------------------------------------------
MACRO: tos EAX ENDM \ вершина стека данных
MACRO: top EBP ENDM \ указатель на вершину стека данных
MACRO: subtop [EBP] ENDM \ подвершина стека данных
MACRO: rtop ESP ENDM \ вершина стека возвратов - указатель
MACRO: tls EDI ENDM \ регистр хранящий область данных потока

\ -- дополнительные регистры ------------------------------------------------
MACRO: addr EBX ENDM \ используется для временного хранения адресов
MACRO: temp EDX ENDM \ для временного хранения данных
MACRO: templ ESI ENDM \ еще один временный регистр
MACRO: cntr ECX ENDM \ временный регистр для хранения счетчика

имеет ли смысл поменять распределение?
и вообще, какое по-вашему мению было бы идеально?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 18, 2008 15:45 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mOleg писал(а):
имеет ли смысл поменять распределение?
и вообще, какое по-вашему мению было бы идеально?

Лучше всего TOS держать в EBX, потому что:
ECX - хранит значение сдвига при операциях сдвига
ESI - используется в цепочечных командах перемещения, сравнения единиц памяти
EDI - используется для этой же цели
EDX - туда сбрасываются старшие разряды TSC, когда нужен этот таймер
EAX - аккумулятор, для него есть много коротких и быстрых команд, которых нет для др. RG
ESP - аппаратно меняется при операциях PUSH, POP(поэтому указатель стека возвратов)
EBP - удобно использовать как базовый регистр, поэтому указатель стека параметров

EBX меньше всех нагружен в спец. командах, меньше потребностей его где-то сохранять
и восстанавливать.
Вывод - по крупному только поменять EAX и EBX местами
Можно еще поменять EDI и EDX в твоей схеме, так как старшая часть таймера редко нужна,
а операции со строками и массивами частое явление.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 18, 2008 16:00 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
спасибо. Но.
Есть операции, производимые только над EAX: сдвиги, деление, умножение (или уже нет?), кроме того в EAX почти везде передается верхнее значение для системных функций (хотя лишний MOV не особо затормозит процесс, но все же).

Насчет обмена EDX c EDI не согласен, так как ЕDX портится, например при делении и умножении, а не только RDTSC.

что же касается схемы - она не моя, а родная СПФовская...
но оптимальный вариант меня очень волнует

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 18, 2008 16:34 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mOleg писал(а):
Насчет обмена EDX c EDI не согласен, так как ЕDX портится, например при делении и умножении, а не только RDTSC.

Точно, это забыл. :(
mOleg писал(а):
Есть операции, производимые только над EAX: сдвиги, деление, умножение (или уже нет?)

Для EAX нет каких то уникальных операций, просто есть еще и эквиваленты команд применимых к другим регистрам но более короткие по коду. Короче аккумулятор надо чаще использовать для оперирования над параметрами, а вершину стека для приема параметров и выдачу в нее результатов. Это точнее соответствует заложенным в них функциональным возможностям и даст более эффективный код в итоге.

_________________
С уважением, chess


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

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


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

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


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

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