Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Я...
...умею использовать RAX 3 17.65%
...не умею использовать RAX 10 58.82%
Я догадываюсь, но не пользовал 4 23.53%
Голосовавшие: 17. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 19:30   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Программирование под 64

Под влиянием предыдущих тем хотелось бы спросить, а есть тут такие, которые умеют использовать новые возможности новомодных 64-битных камней? Спецы по RAX, RBX, откликнитесь!
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.01.2011, 19:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тут не хватает еще одного варианта - "Я догадываюсь, но не пользовал"
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 19:34   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

А что тут такого сильно специального? Ну работай себе с новыми регистрами, делов то.

В своё время понемногу перешли с 16 бит на 32, это было, кстати, гораздо более революционное нововведение, т.к. все эти сегменты:смещения заменились одним понятным 32-битным поинтером.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 19:36   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Ну работай себе с новыми регистрами, делов то.
А вы пробовали?
Цитата:
Тут не хватает еще одного варианта - "Я догадываюсь, но не пользовал"
Было бы неплохо, если бы кто-нибудь добавил.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.01.2011, 19:44   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А вы пробовали?
Пробовал ) Вобще стараюсь asm без сильной надобности не использовать, но вот недавно озадачился совместимостью с FPC, часть моего кода стала выглядеть так:

Код:
	  push	esi
	  push	edi
	  //
	  mov	eax, self
	{$IFDEF FPC }
	  mov	edi, [{$IFDEF CPU64}rax + offset f_list.r_32{$ELSE }eax + offset f_list.r_32{$ENDIF CPU64}]
	{$ELSE }
	  mov	edi, [eax + offset f_list.r_32]
	{$ENDIF FPC }
	  //
	  mov	esi, edi
	{$IFDEF FPC }
	  mov	ecx, [{$IFDEF CPU64}rax + offset f_count{$ELSE }eax + offset f_count{$ENDIF CPU64 }]
	{$ELSE }
	  mov	ecx, [eax + offset f_count]
	{$ENDIF FPC }
	  shl	ecx, 2
	  add	esi, ecx
	  //
	  shr	ecx, 3
    @loop:
	  sub	esi, 4
	  //
        {$IFDEF FPC }
	  mov	eax, [{$IFDEF CPU64}rdi{$ELSE }edi{$ENDIF CPU64}]
	  xchg	eax, [{$IFDEF CPU64}rsi{$ELSE }esi{$ENDIF CPU64}]	//  temp := [esi]; [esi] := eax; eax := temp;
	{$ELSE }
	  mov	eax, [edi]
	  xchg	eax, [esi]	//  temp := [esi]; [esi] := eax; eax := temp;
        {$ENDIF FPC }
	  stosd			// [edi] := eax
				//   edi := edi + 4
	  //
	  loop	@loop
	  //
	  pop	edi
	  pop	esi
Это, конечно, не "чистый" 64-битный код, так, проверка работоспособности.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 19:49   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Код:
mov	eax, [{$IFDEF CPU64}rdi{$ELSE }edi{$ENDIF CPU64}]
Интересно, а как вы собирались в 32-х битный регистр поместить 64 бита?
Может так?:
Код:
mov	{$IFDEF CPU64}rax{$ELSE }eax{$ENDIF CPU64}, [{$IFDEF CPU64}rdi{$ELSE }edi{$ENDIF CPU64}]
Да тогда, по идее и второе условие убрать можно:
Код:
{$IFDEF CPU64}
mov rax, rdi
{$ELSE}
mov eax, edi
{$END IF CPI64}
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 17.01.2011 в 19:52.
Alex Cones вне форума Ответить с цитированием
Старый 17.01.2011, 19:52   #7
Буратино
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 16
По умолчанию

Вот тут-то как раз вопрос, есть ли какие-то команды (допустим, на языке C), которые на 64-битной ОС выполняются гораздо быстрее, чем на 32?
Буратино начал открывать шампанское носом и стал искусственным спутником Земли
Буратино вне форума Ответить с цитированием
Старый 17.01.2011, 19:55   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Вот тут-то как раз вопрос, есть ли какие-то команды (допустим, на языке C), которые на 64-битной ОС выполняются гораздо быстрее, чем на 32?
Самих команд нет.

Но... Могут быть функции, реализованные с учетом новой структуры и использующие новые регистры (точнее расширения старых). Но врят ли кто-то там переделал уже работающий код.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.01.2011, 19:58   #9
Буратино
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 16
По умолчанию

Я точно не помню название, но вроде есть команда типа bsr64, работает только на 64-битных ОС, а зачем ее тогда придумали, если она не быстрее?
Буратино начал открывать шампанское носом и стал искусственным спутником Земли
Буратино вне форума Ответить с цитированием
Старый 17.01.2011, 19:59   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Интересно, а как вы собирались в 32-х битный регистр поместить 64 бита?
на скобочки внимание обращаем:

Код:
mov  eax, [rdi]
Означает 64-битный адрес, а не значение.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование под Linux ji_ji Lazarus, Free Pascal, CodeTyphon 4 12.07.2010 14:00
программирование под WM Mclaren Софт 1 21.04.2010 13:28
Программирование под .Net RIO Свободное общение 5 07.01.2010 22:12
Программирование под .NET RoamingFire Свободное общение 1 04.03.2008 08:35
Программирование под nix Simply-Art Свободное общение 8 20.03.2007 11:45