[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 04/08: Update "A Virtual Machine for Guile"
From: |
Andy Wingo |
Subject: |
[Guile-commits] 04/08: Update "A Virtual Machine for Guile" |
Date: |
Fri, 28 Sep 2018 08:40:41 -0400 (EDT) |
wingo pushed a commit to branch master
in repository guile.
commit f1b745eec5eb495f214b44e243abd03845079d62
Author: Andy Wingo <address@hidden>
Date: Fri Sep 28 12:14:09 2018 +0200
Update "A Virtual Machine for Guile"
* doc/ref/vm.texi (A Virtual Machine for Guile): Update.
---
doc/ref/vm.texi | 40 ++++++++++++++++++++++++++++------------
1 file changed, 28 insertions(+), 12 deletions(-)
diff --git a/doc/ref/vm.texi b/doc/ref/vm.texi
index 7ff247f..15f0146 100644
--- a/doc/ref/vm.texi
+++ b/doc/ref/vm.texi
@@ -7,18 +7,34 @@
@node A Virtual Machine for Guile
@section A Virtual Machine for Guile
-Guile has both an interpreter and a compiler. To a user, the difference
-is transparent---interpreted and compiled procedures can call each other
-as they please.
-
-The difference is that the compiler creates and interprets bytecode
-for a custom virtual machine, instead of interpreting the
-S-expressions directly. Loading and running compiled code is faster
-than loading and running source code.
-
-The virtual machine that does the bytecode interpretation is a part of
-Guile itself. This section describes the nature of Guile's virtual
-machine.
+Enough about data---how does Guile run code?
+
+Computer systems consist of towers of languages, each level defining a
+higher level language and implemented using lower-level facilities.
+Sometimes these languages are implemented using interpreters: programs
+that run along-side the program being interpreted, dynamically
+translating the high-level code to low-level code. Sometimes these
+languages are implemented using compilers: programs that translate
+high-level programs to equivalent low-level code, and pass on that
+low-level code to the next level down. Each of these levels can be
+throught to be virtual machines; they offer programs an abstract machine
+on which to run.
+
+Guile implements a number of interpreters and compilers on different
+language levels. For example, there is an interpreter for the Scheme
+language that is itself implemented as a Scheme program compiled to a
+bytecode for a low-level virtual machine shipped with Guile. That
+virtual machine is implemented by both an interpreter---a C program that
+interprets the bytecodes---and a compiler---a C program that dynamically
+translates bytecode programs to native machine code.
+
+Even the lowest-level machine code can be thought to be interpreted by
+the CPU, and indeed is often implemented by compiling machine
+instructions to ``micro-operations''.
+
+This section describes the language implemented by Guile's bytecode
+virtual machine, as well as some examples of translations of Scheme
+programs to Guile's VM.
@menu
* Why a VM?::
- [Guile-commits] branch master updated (a74b4a4 -> 4c53593), Andy Wingo, 2018/09/28
- [Guile-commits] 07/08: Update "Stack Layout", Andy Wingo, 2018/09/28
- [Guile-commits] 08/08: Update "Variables and the VM", Andy Wingo, 2018/09/28
- [Guile-commits] 04/08: Update "A Virtual Machine for Guile",
Andy Wingo <=
- [Guile-commits] 06/08: Update "VM Concepts", Andy Wingo, 2018/09/28
- [Guile-commits] 01/08: Update history.texi., Andy Wingo, 2018/09/28
- [Guile-commits] 02/08: Update Conservative GC section of manual, Andy Wingo, 2018/09/28
- [Guile-commits] 03/08: Update data representation chapter in the manual, Andy Wingo, 2018/09/28
- [Guile-commits] 05/08: Update "Why a VM?", Andy Wingo, 2018/09/28