[fpc-devel] missing descriptions for few compiler magic functions

Jonas Maebe jonas.maebe at elis.ugent.be
Mon Jul 20 18:12:39 CEST 2009


On 20 Jul 2009, at 17:12, Paul Ishenin wrote:

> I have found that next functions are not described here: http://freepascal.org/docs-html/rtl/system/index.html

Several of them are 2.3.1, so it's normal that they are not yet in the  
documentation.

> The functions are:
> - BitSizeOf

It's similar to sizeof, except that it returns the size in bits of the  
type when it is used in a bitpacked record or array.

> - get_frame

It returns a pointer to the current routine's stack frame, and at the  
same time makes sure that the compiler does not optimize the stack  
frame of the current routine away.

> - Pack
> - ReadStr
> - Unpack
> - WriteStr

These come straight from ISO (Standard or Extended) Pascal and behave  
exactly as described in the standards:
* Pack, Unpack: http://www.moorecad.com/standardpascal/iso7185.html#6.6.5.4%20Transfer%20procedures
* ReadStr, WriteStr: section 6.7.5.5 of http://www.moorecad.com/standardpascal/iso10206.pdf 
  (p. 86 of the pdf)

> - Unaligned


Make the compiler assume that the argument is an unaligned memory  
location (it takes a "var" parameter, i.e., not a pointer but what the  
pointer points to), and hence that the compiler should use load  
instructions that are safe in such a situation on CPUs that require  
this (such as ARM and SPARC).


Jonas



More information about the fpc-devel mailing list