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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: вопрос не совсем по теме, но
СообщениеДобавлено: Вс окт 08, 2006 23:45 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Может кто подскажет, есть ли возможность в gcc явно задать имя регистровой переменной, что то вроде:
If( EAX != 0 )


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 19:31 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Да, жаль столько времени прошло, но может кому-то пригодится..

Есть в GCC так называемые register globals.

определяются так:
register long foo asm("esi");
register long bar asm("edi");

В дальнейшем просто где надо определяется и используется..

В pfe-0.33.70 в файле pfe/def-regmacro.h используется следующая конструкция:

# if PFE_USE_REGS >= 1
# if ! defined PFE_NEED_NO_REGTH
# if defined PFE_CAN_USE_R15
# undef PFE_CAN_USE_R15
# define PFE_ASM_USE_R15 "TH"
# define P4_REGTH "%r15"
# elif defined PFE_CAN_USE_EBX
# undef PFE_CAN_USE_EBX
# define PFE_ASM_USE_EBX "TH"
# define P4_REGTH "%"PFE_i386_EBX
....


А в pfe/pfe.h такое:

#if defined HOST_CPU_I386 || defined HOST_CPU_I486 \
|| defined HOST_CPU_I586 || defined HOST_CPU_I686
# define P4_REGTH "%ebx"
# define P4_REGIP "%esi"

#ifdef P4_REGTH /* forth thread pointer */
register struct p4_Thread* p4TH asm (P4_REGTH);
#else
extern struct p4_Thread* p4TH;

Судя по всему конкретно в pfe работает либо одно либо другое, в зависимости чего там придумает configure (и как он определит HOST_CPU_... итп), но вобщем конкретно у меня работал кусок, который в def-regmacro.h, и его даже пришлось вручную отключить вписав такое в def_regmacro.h:
#undef PFE_USE_REGS

Хорошая штука, но есть нюансы: например что эта опция имеет приоритет перед ключем командной строки запрещающим регистровую оптимизацию, и найти как его отключить (чтобы хоть как-то скомпилить) не всегда оказывается просто, а отключать нужно, потому что оно может конфликтовать с встроенными регистровыми предпочтениями GCC, в результате вообще не будет компилиться..


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

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


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

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


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

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