]> git.sur5r.net Git - cc65/blobdiff - doc/cc65-intern.sgml
Change XEX configuration file names to better reflect original names.
[cc65] / doc / cc65-intern.sgml
index 0bcb51cba6bba21a595b23f5be7191a2de373dc6..ec6c48ca31da9e0e4d4bdc04660da79f765ea63a 100644 (file)
@@ -2,8 +2,7 @@
 
 <article>
 <title>cc65 internals
-<author><url url="mailto:brad@rainwarrior.ca" name="Brad Smith">
-<date>2016-02-27
+<author><url url="mailto:bbbradsmith@users.noreply.github.com" name="Brad Smith">
 
 <abstract>
 Internal details of cc65 code generation,
@@ -27,7 +26,7 @@ There are two calling conventions used in cc65:
   <item><tt/cdecl/ - passes all parameters on the C-stack.
   <p>
   <item><tt/fastcall/ - passes the rightmost parameter in
-  registers <tt>A/X/sreg</tt> an all others on the C-stack.
+  registers <tt>A/X/sreg</tt> and all others on the C-stack.
   <p>
 </itemize>
 
@@ -52,7 +51,7 @@ If the function is declared as fastcall, the rightmost argument will be loaded i
 the <tt>A/X/sreg</tt> registers:
 
 <itemize>
-  <item><tt/A/ - 8-bit parameter, or low byte of larger tyes<p>
+  <item><tt/A/ - 8-bit parameter, or low byte of larger types<p>
   <item><tt/X/ - 16-bit high byte, or second byte of 32-bits<p>
   <item><tt/sreg/ - Zeropage pseudo-register including high 2 bytes of 32-bit parameter<p>
 </itemize>
@@ -68,7 +67,7 @@ the <tt/Y/ register will contain the number of bytes pushed to the stack for thi
 Example:
 <tscreen><verb>
 // C prototype
-void foo(unsigned bar, unsigned char baz);
+void cdecl foo(unsigned bar, unsigned char baz);
 
 ; C-stack layout within the function:
 ;
@@ -89,9 +88,9 @@ void foo(unsigned bar, unsigned char baz);
     lda     (sp),y  ; Low byte now in A
 </verb></tscreen>
 
-<sect1>Epilogue, after the functiona call<p>
+<sect1>Epilogue, after the function call<p>
 
-<sect2>Return requirements</p>
+<sect2>Return requirements<p>
 
 If the function has a return value, it will appear in the <tt>A/X/sreg</tt> registers.
 
@@ -114,7 +113,7 @@ number of bytes pushed to the stack on entry, which may be added to <tt/sp/ to r
 
 The internal pseudo-register <tt/regbank/ must not be changed by the function.
 
-<sect2>Clobbered state</p>
+<sect2>Clobbered state<p>
 
 The <tt/Y/ register may be clobbered by the function.
 The compiler will not depend on its state after a function call.
@@ -126,6 +125,7 @@ Many of the internal pseudo-registers used by cc65 are available for
 free use by any function called by C, and do not need to be preserved.
 Note that if another C function is called from your assembly function,
 it may clobber any of these itself:
+
 <itemize>
   <item><tt>tmp1 .. tmp4</tt><p>
   <item><tt>ptr1 .. ptr4</tt><p>