Browse Source

* assembler keyword update

carl 27 years ago
parent
commit
de9ddbbc7b
1 changed files with 13 additions and 15 deletions
  1. 13 15
      docs/ref.tex

+ 13 - 15
docs/ref.tex

@@ -1089,25 +1089,23 @@ as of version 0.9.7. This permits the code generator to make a number
 of code generation optimizations.
 of code generation optimizations.
 
 
 The code generator does not generate any stack frame (entry and exit
 The code generator does not generate any stack frame (entry and exit
-code for the routine) if it contains no local variables. In the case
-of functions, ordinal values must be returned in the accumulator. In
-the case of floating point values, these depend on the target processor
-and emulation options.
+code for the routine) if it contains no local variables and no
+parameters. In the case of functions, ordinal values must be returned
+in the accumulator. In the case of floating point values, these depend
+on the target processor and emulation options.
 
 
 \emph{ Remark: } Before version 0.99.1, \fpc did not support
 \emph{ Remark: } Before version 0.99.1, \fpc did not support
 reference to variables by their names in the assembler parts of your code.
 reference to variables by their names in the assembler parts of your code.
 
 
-\emph{ Remark: } Currently, the \var{Assembler} directive has not the
-same effect as in Turbo Pascal, so beware! In \fpc, parameters are
-treated normally, which is not the case in Turbo Pascal. Furthermore,
-the stack frame will be omitted if there are no local variables, in this
-case if the assembly routine has any parameters, they will be referenced
-directly via the stack pointer. This is \em{ NOT} like Turbo Pascal where
-the stack frame is only omitted if there are no parameters \em{ and } no
-local variables. Therefore, if your assembly routines will modify the stack
-pointer, such as when pushing or popping values on the stack, the
-\var{Assembler} keyword should not be used. Instead, use a normal procedure
-with \var{Asm} blocks.
+\emph{ Remark: } From version 0.99.1 to 0.99.5 (\emph{excluding}
+FPC 0.99.5a), the \var{Assembler} directive did not have the
+same effect as in Turbo Pascal, so beware! The stack frame would be
+omitted if there were no local variables, in this case if the assembly
+routine had any parameters, they would be referenced directly via the stack
+pointer. This was \emph{ NOT} like Turbo Pascal where the stack frame is only
+omitted if there are no parameters \emph{ and } no local variables. As
+stated earlier, starting from version 0.99.5a, \fpc now has the same
+behaviour as Turbo Pascal.
 
 
 \section{Modifiers}
 \section{Modifiers}
 \fpc doesn't support all Turbo Pascal modifiers, but
 \fpc doesn't support all Turbo Pascal modifiers, but