瀏覽代碼

+ applied some changes by carl.

michael 27 年之前
父節點
當前提交
c635ab47c7
共有 1 個文件被更改,包括 31 次插入41 次删除
  1. 31 41
      docs/ref.tex

+ 31 - 41
docs/ref.tex

@@ -98,7 +98,7 @@ Shortint & -127 .. 127 & 1\\
 Integer & -32768 .. 32767 & 2 \\
 Word & 0 .. 65535 & 2 \\
 Longint & -2147483648 .. 2147483648 & 4\\
-Cardinal\footnote{The cardinal type support is buggy until version 0.9.3} & 0..4294967296 & 4 \\ \hline
+Cardinal\footnote{The cardinal type support is buggy until version 0.99.6} & 0..4294967296 & 4 \\ \hline
 \end{FPCltable}
 
 \fpc does automatic type conversion in expressions where different kinds of
@@ -115,12 +115,13 @@ as \var{\%11111111}.
 
 \subsection{Real types}
 \fpc uses the math coprocessor (or an emulation) for al its floating-point 
-calculations. The native type for the coprocessor is \var{Double}. Other
-than that, all Turbo Pascal real types are supported. They're listed in
+calculations. The Real native type for is processor dependant,
+but it is either Single or Double. Only the IEEE floating point type are
+supported, and these depend on the target processor and emulation options .
+The true Turbo Pascal compatible types are listed in
 \seet{Reals}.
  \begin{FPCltable}{lccr}{Supported Real types}{Reals}
 Type & Range & Significant digits & Size\footnote{In Turbo Pascal.} \\ \hline
-Real & 2.9E-39 .. 1.7E38 & 11-12 & 6 \\
 Single & 1.5E-45 .. 3.4E38 & 7-8 & 4 \\
 Double & 5.0E-324 .. 1.7E308 & 15-16 & 8 \\
 Extended & 1.9E-4951 .. 1.1E4932 & 19-20 & 10\\
@@ -128,9 +129,8 @@ Extended & 1.9E-4951 .. 1.1E4932 & 19-20 & 10\\
 \end{FPCltable}
 
 Until version 0.9.1 of the compiler, all the real types are mapped to type
-\var{Double}, meaning that they all have size 8. From version 0.9.3, the
-\var{Extended} and \var{single} types are defined with the same suze as in
-Turbo Pascal. The \seef{SizeOf} function is your friend here.
+\var{Double}, meaning that they all have size 8. The \seef{SizeOf} function
+is your friend here.
 
 \subsection{Character types}
 \subsubsection{Char}
@@ -291,6 +291,9 @@ be called, which may have strange side-effects.
 \end{verbatim} 
 Here \var{Func} is a function which returns a \var{Boolean} type.
 
+{\em Remark:} The wordbool, longbool and bytebool were not supported
+by \fpc until version 0.99.6.
+
 \subsection{Arrays}
 \fpc supports arrays as in Turbo Pascal, multi-dimensional arrays 
 and packed arrays are also supported.
@@ -1008,7 +1011,7 @@ valid for both.
 Function overloading simply means that you can define the same function more
 than once, but each time with a different set of arguments.
 
-When the compiler encounters a unction call, it will look at the function
+When the compiler encounters a function call, it will look at the function
 parameters to decide which od the defined function
 This can be useful if you want to define the same function for different
 types. For example, if the RTL, the  \var{Dec} procedure is
@@ -1061,18 +1064,9 @@ procedures which accept arrays of fixed length.
 
 \section{Using assembler in your code}
 \fpc supports the use of assembler in your code, but not inline
-assembler. assembly functions (i.e. functions declared with the
-\var{Assembler} keyword) are supported as of version 0.9.7.
-
-{\em Remark :}
-\fpc issues AT\&T assembly language, as understood by most
-unix assemblers (most notably : GNU \var{as}). 
-Intel assembler syntax is available as of version 0.9.8 but the Intel
-support isn't complete in the sense that it is converted to AT\&T syntax,
-and some constructions aren't supported by the conversion mechanism (see
+assembler macros. Assembly functions (i.e. functions declared with the
+\var{Assembler} keyword) are supported as of version 0.9.7. (see
 \progref for more information about this).
-Therefore all examples of assembly language will be given in AT\&T syntax,
-as it is the 'native' assembly from \fpc.
 
 The following is an example of assembler inclusion in your code.
 \begin{verbatim}
@@ -1080,20 +1074,21 @@ The following is an example of assembler inclusion in your code.
  Statements;
  ...
  Asm
-   Movl 0,%eax
+   your asm code here
    ...
  end;
  ...
  Statements;
 \end{verbatim}
+
 The assembler instructions between the \var{Asm} and \var{end} keywords will
 be inserted in the assembler generated by the compiler.
 
-You can still use comditionals in your assembler, the compiler will
+You can still use conditionals in your assembler, the compiler will
 recognise it, and treat it as any other conditionals.
 
-Contrary to Turbo Pascal, it isn't possible (yet) to reference variables by 
-their names in the assembler parts of your code.
+\emph{ Remark: } Before version 0.99.1, \fpc did not support
+reference to variables by their names in the assembler parts of your code.
 
 \section{Modifiers}
 \fpc doesn't support all Turbo Pascal modifiers, but
@@ -1325,7 +1320,7 @@ powerful tool for making externally accessible object files.
 \subsection{[RegisterList]}
 This modifier list is used to indicate the registers that are modified by an
 assembler block in your code. The compiler stores certain results in the
-registers. If you modify theregisters in an assembly block, the compiler
+registers. If you modify the registers in an assembly block, the compiler
 should, sometimes, be told about it.
 The prototype syntax of the \var{Registerlist} modifier is:
 \begin{verbatim}
@@ -1333,7 +1328,7 @@ asm
   statements
 end; ['register1','register2',...,'registern'];
 \end{verbatim}
-Where \var{'register'} is one of \var{'EAX',EBX',ECX','EDX'} etc.
+Where is register one of any of the available processor registers.
 
 
 \subsection{Unsupported Turbo Pascal modifiers}
@@ -1372,14 +1367,6 @@ byte     = 0..255;
 word     = 0..65535;
 \end{verbatim}
 
-The following Real types are declared: 
-\begin{verbatim}
-double = real;
-{$ifdef VER0_6}
-  extended = real;
-  single = real;
-{$endif VER0_6}
-\end{verbatim}
 
 And the following pointer types:
 \begin{verbatim}
@@ -1399,17 +1386,21 @@ Const
 
   filemode : byte = 2;
 \end{verbatim}
-Further, the following general-purpose constants are also defined:
+Further, the following non processor specific general-purpose constants
+are also defined:
 \begin{verbatim} 
 const
-  test8086 : byte = 2; { always i386 or newer }
-  test8087 : byte = 3; { Always 387 or higher. emulated if needed. }
   erroraddr : pointer = nil;
   errorcode : word = 0;
  { max level in dumping on error }
   max_frame_dump : word = 20;
 \end{verbatim}
 
+\emph{ Remark: } Processor specific global constants are named Testxxxx
+where xxxx represents the processor number (such as Test8086, Test68000),
+and are used to determine on what generation of processor the program
+is running on.
+
 \subsection{Variables}
 The following variables are defined and initialized in the system unit:
 \begin{verbatim}
@@ -2007,10 +1998,10 @@ arguments were given to the running program, \var{0} is returned.
 be between \var{0} and \var{Paramcount}, these values included.
 The zeroth argument is the name with which the program was started.
 }
-{Under Linux, command-line arguments may be longer than 255 characters. In
-that case, the string is truncated. If you want to access the complete
-string, you must use the \var{argv} pointer to access the real values of the
-command-line parameters.}
+{ In all cases, the command-line will be truncated to a length of 255,
+even though the operating system may support bigger command-lines. If you
+want to access the complete command-line, you must use the \var{argv} pointer
+to access the real values of the command-line parameters.}
 {\seef{Paramcount}}
 
 For an example, see \seef{Paramcount}.
@@ -2097,7 +2088,6 @@ If \var{F} is a typed file, then each of the variables must be of the type
 specified in the declaration of \var{F}. Untyped files are not allowed as an
 argument.}
 {If no data is available, a run-time error is generated. This behavior can
-
 be controlled with the \var{\{\$i\}} compiler switch.}
 {\seep{Readln}, \seep{Blockread}, \seep{Write}, \seep{Blockwrite}}