[fpc-devel] rdtscp

Nikolay Nikolov nickysn at gmail.com
Mon Oct 23 22:40:27 CEST 2017



On 10/23/2017 02:21 AM, Wolf wrote:
>
>
> On 23/10/17 02:53, Nikolay Nikolov wrote:
>>
>> FPC trunk supports rdtscp. And if you're using a FPC version that 
>> doesn't support an instruction, you can always hardcode it with 'db' 
>> (make sure you add a comment with the real instruction to keep your 
>> code readable), e.g:
>>
>> db 0fh, 01h, 0f9h  { rdtscp - not supported by FPC 3.0's inline 
>> assembler }
>>
>> Nikolay
>>
> db 0fh, 01h, 0f9h is a Delphi instruction, as far as I can make it 
> out. It does not work with FPC 3.00 - at least with the settings 
> Lazarus provides by default running under Linux.
> What does work is
>       .byte 0x0F, 0x01, 0xF9    // read the Time-Stamp Counter rdtscp 
> (as op-code format,
>                                               // requires setting the 
> compiler switch -aas
>                                               // in Lazarus: 
> Options/Custom Options/All Options )
Yes, that's AT&T asm syntax. FPC supports both AT&T and Intel syntax 
modes with the {$asmmode} directive:

https://www.freepascal.org/docs-html/prog/progsu3.html

AT&T is the default for historical reasons, but Intel also works fine.

Nikolay



More information about the fpc-devel mailing list