]> git.sur5r.net Git - cc65/commitdiff
Document computed gotos
authorLauri Kasanen <cand@gmx.com>
Mon, 15 Apr 2019 16:27:23 +0000 (19:27 +0300)
committergreg-king5 <greg.king5@verizon.net>
Sun, 21 Apr 2019 16:46:03 +0000 (12:46 -0400)
doc/cc65.sgml

index a66854095433cc63218a85650d576953f11139e6..11b112f6f0f265a8f6a0268494b28fb7cdb852f7 100644 (file)
@@ -776,6 +776,25 @@ This cc65 version has some extensions to the ISO C standard.
         size zero, even if it is initialized.
         <p>
 
+<item>  Computed gotos, a GCC extension, has limited support. With it you can
+        use fast jump tables from C. You can take the address of a label with
+        a double ampersand, putting them in a static const array of type void *.
+        Then you can jump to one of these labels as follows:
+
+        <tscreen><verb>
+        static const void * const jumptable[] = {
+                &amp;&amp;add,
+                &amp;&amp;sub
+        };
+        goto *jumptable[somevar];
+
+        add:
+        ...code...
+        </verb></tscreen>
+
+        In the jump table, no expressions are supported. The array index
+        used in the goto must be a simple variable or a constant.
+
 </itemize>
 <p>