using IFAGAIN instead
[rrq/rrqforth.git] / adoc / p_dostring.adoc
index 54725c166ed9a3a6f898c57008b25ba9fdf97dcd..3645b06921f0df1bd613f84a33a5830dfa2f0fc4 100644 (file)
@@ -1,9 +1,26 @@
+// rrqforth.asm:       WORD p_dostring,'doSTRING',dovariable
+
 anchor:p_dostring[]
 
-Word: doSTRING
---------------
+=== Word: doSTRING
+
+....
+Data stack: ( -- a )
+....
+
+"doFASM" is a variable word whose value is the implementation of the
+execution semantics for assembly code implemented words. In those
+cases the execution leads to the word content.
+
+The register context at entry to an assembly code implemented word is
+as follows:
 
 ----
-rrqforth.asm:  WORD p_dostring,'doSTRING',dovariable
+    rax = cfa* of word to execute
+    rsi = cell* in the calling definition, after calling cell
+    rsp = data stack pointer
+    rbp = return stack pointer
 ----
 
+The assembly code must ensure that +rsi+ is preserved and that +rsp+
+and +rbp+ are used according to their roles.