[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