X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/9419ff9ae91c93983972797e607e135ecd1233bb..4ee5686f6cc16cc78df4eecb10eab25268e74835:/README diff --git a/README b/README index e69de29bb..80b5b605e 100644 --- a/README +++ b/README @@ -0,0 +1,110 @@ +Installation +------------ + + % ./autogen.sh + % configure + % make + % su + # make install + # ln -s module/{system,language} /usr/local/share/guile/site/ + +Add the following lines to your ~/.guile: + + (if (string=? (car (command-line)) "guile-vm") + (begin + (use-modules (system repl repl)) + (start-repl 'r5rs) + (quit))) + +Example Session +--------------- + + % guile-vm + Standard Scheme (R5RS + syntax-case) interpreter 0.3 on Guile 1.4.1 + Copyright (C) 2001 Free Software Foundation, Inc. + + Enter `,help' for help. + r5rs@guile> (+ 1 2) + $1 = 3 + r5rs@guile> ,c -c (+ 1 2) ;; Compile into GLIL + (@asm (0 0 0 0) + (const 1) + (const 2) + (add) + (return)) + r5rs@guile> ,c -l (+ 1 2) ;; Compile into loadable code + 0 make-int8:0 ;; 0 + 1 load-program #0 + 8 return + + Bytecode #0: + + 0 make-int8:1 ;; 1 + 1 make-int8 2 ;; 2 + 3 add + 4 return + + r5rs@guile> ,c (+ 1 2) ;; Compile and disassemble + Disassembly of #: + + args = 0 rest = 0 locals = 0 + + Bytecode: + + 0 make-int8:1 ;; 1 + 1 make-int8 2 ;; 2 + 3 add + 4 return + + r5rs@guile> (define (add x y) (+ x y)) + r5rs@guile> (add 1 2) + $2 = 3 + r5rs@guile> ,x add ;; Disassemble + Disassembly of #: + + args = 2 rest = 0 locals = 0 + + Bytecode: + + 0 local-ref 1 + 2 local-ref:0 + 3 add + 4 return + + r5rs@guile> + +Write Modules +------------- + + ---- fib.scm --------------------------- + (define-module (fib) + :use-module (system vm load) + :export (fib)) + + (load/compile "fib.gsm") + ---------------------------------------- + + ---- fib.gsm --------------------------- + (define (fib n) + (if (< n 2) + 1 + (+ (fib (- n 1)) (fib (- n 2))))) + ---------------------------------------- + +Now, expressions in fib.gsm are automatically compiled and +executed by the Guile VM: + + % guile + guile> (use-modules (fib)) + guile> (time (fib 30)) + clock utime stime cutime cstime gctime + 2.89 2.88 0.00 0.00 0.00 0.00 + $1 = 1346269 + guile> (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2))))) + guile> (time (fib 30)) + clock utime stime cutime cstime gctime + 26.05 25.01 0.17 0.00 0.00 14.33 + $2 = 1346269 + +If you don't want to compile your code (e.g., for debugging purpose), +just change `load/compile' to `load'.