RDTSC в FPC 64

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

RDTSC в FPC 64

Сообщение Max Rusov » 25.04.2009 15:55:20

Помогите, пожалуйста, переписать в функцию в 64-х разрядную версию:

function GetCPUTick :Int64;
asm
RDTSC
end;
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: RDTSC в FPC 64

Сообщение Mr.Smart » 25.04.2009 16:48:37

в чём естественно проблемы
Код: Выделить всё
function GetCPUTick: Int64; register;
asm
rdtsc
end;

а вообще как написано здесь http://en.wikipedia.org/wiki/Time_Stamp_Counter
Under Windows platforms, Microsoft strongly discourages using the TSC for high-resolution timing for exactly these reasons, providing instead the Windows APIs QueryPerformanceCounter and QueryPerformanceFrequency. Even when using these functions, Microsoft recommends the code to be locked to a single CPU. Under Linux, similar functionality is provided by reading the value of CLOCK_MONOTONIC clock using POSIX clock_gettime function.

пользуйтесь функциями ОС для которой пишите.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: RDTSC в FPC 64

Сообщение Max Rusov » 25.04.2009 16:59:41

Mr.Smart писал(а):в чём естественно проблемы


Проблема в том, что так не работает. Полагаю, что дело в способе возврата результата. RDTSC помещает результат в EDX:EAX, а в 64-х разрядных программах результат, наверное, возвращается иначе - через 64-х разрядные регистры. Я с этим пока не разбирался, вот прошу помощи. А QeryPerformanceCounter меня не устраивает.

Добавлено спустя 7 часов 12 минут 12 секунд:
Вроде, получилось.

Код: Выделить всё
  function GetCPUTick :TInt64;
  asm
    RDTSC
    movslq  %eax,%rax
    movslq  %edx,%rdx
    shl     $0x20,%rdx
    add     %rdx,%rax
  end;


Странно, что assembler по синтаксису не совместим с Delphi, хотя у меня стоят соответствующие опции. Понятно, что пока нет 64-х разрядного Delphi о совместимости говорить некорректно, но все таки...
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: RDTSC в FPC 64

Сообщение e-moe » 09.06.2009 14:16:35

Max Rusov писал(а):Странно, что assembler по синтаксису не совместим с Delphi, хотя у меня стоят соответствующие опции. Понятно, что пока нет 64-х разрядного Delphi о совместимости говорить некорректно, но все таки...

-Rintel
e-moe
новенький
 
Сообщения: 31
Зарегистрирован: 27.09.2007 17:00:39


Вернуться в Free Pascal Compiler

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 3

Рейтинг@Mail.ru