A Scheme Interpreter for ARM Microcontrollers:
Performance of Version 050

SourceForge.net Logo

Executive Summary:

Armpit Scheme, a minimalist interpreter, performs at a decent clip, similar to Guile 1.7.1, a full-fledged interpreter. Performance has not yet been tested against the more recent and faster Guile 2.x.

 

Performance Details:


A minimal amount of performance assessment has been performed on Armpit Scheme using test code from the Gambit-C Scheme Benchmarks (available here) discussed (among others) by Pierard and Feeley (2007) in the context of Mobit (a Portable and Mobile Scheme Interpreter).

Three functions were used in the present assessment to estimate Armpit Scheme's performance in relation to the Gambit-C Scheme compiler and to GNU Guile: tak.scm, ctak.scm and mazefun.scm. The first test computes the Takeuchi function recursively: (tak 18 12 6), the second test computes the same function in continuation-passing style: (ctak 18 12 6), and the third test generates a 11x11 cell maze in a purely functional way: (make-maze 11 11). On Armpit Scheme, all tests were started with a clear heap (system reset). For the tak test, 4 evaluations were performed: 1) gtak - an interpreted version with generic arithmetic, 2) rtak - an interpreted version with fixnum-specific arithmetic (fx-, fx>=?), 3) tak - a compiled version of rtak with *immutable-primitives* and *inline-cons* switches set to #t, and 4) atak - an ARMSchembled version of tak with the *inline-cons* switch set to #t. The source code for rtak, tak and atak is given with the compiler testing code file, here (scm), and the resulting machine code for tak and atak is given at the bottom of this page. The code for gtak is:


  (define gtak
    (lambda (x y z)
      (if (>= y x)
	  z
  	  (gtak (gtak (- x 1) y z)
	        (gtak (- y 1) z x)
	        (gtak (- z 1) x y)))))

The test results included with the benchmark source from the University of Montreal were obtained on a 2 GHz Intel Core MacBook Pro. Tests with GNU Guile version 1.7.1 were performed on a 500 MHz Sparc IIe SUN Blade 100 (development machine). Armpit Scheme tests were performed on 60MHz Tiny2106 and LPC-H2214 (arm7tdmi), 202 MHz TCT-Hammer (arm920t), 50 MHz EVB-LM3S1968 and 72 MHz STM32-LCD (cortex-m3), and 1000 MHz BeagleBoard-XM (cortex-a8). The STM32-LCD, TCT-Hammer and BeagleBoard-XM were communicating via on-chip USB while others used uarts. A benchmark run of the BeagleBoard-XM, with uart communication, was also performed to assess the impact of usb on performance.

To obtain a common base for comparison, results obtained for multiple benchmark iterations and at speeds other than 60 MHz were converted to the time, t1/60, that it would take to perform 1 iteration of the benchmark if the CPU clock was 60MHz and the system performance scaled linearly:

     t1/60 = (time-for-n-iterations / n) * (CPU-clock-speed / 60MHz).
Times were typically measured only to the nearest second on Guile and Armpit Scheme. The results (t1/60) were as follows (Version 050, all values in seconds):

    benchmark  Gambit-C  Guile LM3S1968 Tiny2106 STM32-LCD Beagle-XM TCT-Hammer LPC-H2214 B-XM-uart
    ---------  --------  ----- -------- -------- --------- --------- ---------- --------- ---------
      gtak       0.025     5     2.3      2.8       3.4       2.8       2.4        3.6      2.3
      rtak        --       --    1.8      2.1       2.7       2.1       1.8        2.9      1.8
       tak        --       --     --      ---       1.8       1.3       1.3        2.3      1.3
      atak        --       --    0.061    0.047     0.068     0.077     0.067      0.11     0.077
      ctak       0.60     36     5.0      6.0       7.5       5.3       4.7        7.2      4.8
    mazefun      0.05      6     5.4      6.8       8.4       4.0       3.7        5.8      3.5

By comparison, the results for the previous stable version (00.0160) were (note: 2 tested MCUs differ):

    benchmark  Gambit-C  Guile LM3S1968 Tiny2106 LPC-H2888 CS-EP9302 TCT-Hammer LPC-H2214
    ---------  --------  ----- -------- -------- --------- --------- ---------- ---------
      gtak       0.025     5      3        4         5         5         4         8 
      atak        --       --     --       0.06      0.19      0.11      0.08      0.27
      ctak       0.60     36      6        7         8         8         7        12 
    mazefun      0.05      6     10       12         7         6         6        10 

From the 4 MCUs tested in both 00.0160 and 050 one observes that 050 is faster, especially for mazefun which is nearly twice as fast. Performance of atak is up by approximately 20% and gtak is faster by 20% to 40%. Performance on MCUs with external memory is faster than Guile 1.7.1 and possibly similar to the new Guile 2.x which is driven by a VM and faster than 1.7.1 (but not tested here because the test machine is not equipped with the needed libraries). Within version 050, using Fixnum (integer) arithmetic functions in rtak gives a 20% speed improvement over the generic arithmetic in gtak. The compiled tak with Fixnum arithmetic is approximately twice as fast as the interpreted gtak with generic arithmetic, and provides a reduction of computation time of approximately 30% relative to the interpreted Fixnum version in rtak. The speedup between rtak and tak is indicative of the potential speed improvement that a bytecode oriented VM might bring to interpreted Armpit Scheme (approx. 30%, which is not huge). The ARMSchembled atak is 20 times faster than the compiled tak, suggesting that the caps_050 compiler has room for improvement, however, it generally works, and is relatively small. Armpit Scheme (running on ARM), whether interpreted, compiled or ARMSchembled, is still slower than the optimized output of Gambit-C (running on Intel Core). Finally, we note that using usb communications slows interpreted code by approximately 15% when compared to communicating via uart, whereas compiled and ARMSchembled code is unaffected (compare columns Beagle-XM and B-XM-uart).



Compiled and ARMSchembled machine code for tak and atak, produced by Armpit Scheme's caps and as, for ARM and Thumb2 (Cortex-M3) instruction sets:



;; tak -- ARM (approx. 8000 bytes)
((unpack-above-heap
  (link
   #(#vu8(223 0 0 0 
	  4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 
	  160 147 5 2 0 154 3 32 192 227 2 4 162 232 8 160 66 226 2 0 130 227 212 71 159 229
	  12 192 160 225 8 80 143 226 15 16 160 225 254 1 0 234 231 1 0 234 4 224 79 226 3 0 
	  32 226 8 32 155 229 8 32 66 226 0 0 82 225 16 48 160 147 244 1 0 154 3 32 192 227 
	  2 4 162 232 8 192 66 226 0 18 162 232 8 160 66 226 2 0 130 227 164 71 159 229 12
	  192 160 225 15 16 160 225 238 1 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 
	  226 0 0 82 225 8 48 160 147 227 1 0 154 3 32 192 227 16 4 162 232 8 160 66 226 2
	  0 130 227 108 71 159 229 12 192 160 225 15 16 160 225 223 1 0 234 4 80 160 225 16
	  4 154 232 124 135 159 229 14 224 160 225 68 32 155 229 60 32 146 229 4 16 143 226
	  2 240 160 225 12 192 160 225 0 6 154 232 2 4 154 232 47 0 52 227 2 0 0 10 44 71 159 
	  229 12 192 160 225 207 1 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226
	  0 0 82 225 8 48 160 147 196 1 0 154 3 32 192 227 2 4 162 232 8 160 66 226 2 0 130
	  227 248 70 159 229 12 192 160 225 15 16 160 225 192 1 0 234 4 224 79 226 3 0 32 226 
	  8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 181 1 0 154 3 32 192 227 16 4 
	  162 232 8 160 66 226 2 0 130 227 15 80 160 227 4 224 79 226 3 0 32 226 8 32 155 229 
	  0 32 66 226 0 0 82 225 8 48 160 147 169 1 0 154 3 32 192 227 0 6 162 232 8 160 66 
	  226 2 0 130 227 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48
	  160 147 158 1 0 154 3 32 192 227 32 4 162 232 8 160 66 226 2 0 130 227 96 70 159 
	  229 12 192 160 225 15 16 160 225 154 1 0 234 4 224 79 226 3 0 32 226 8 32 155 229 
	  0 32 66 226 0 0 82 225 8 48 160 147 143 1 0 154 3 32 192 227 16 4 162 232 8 160 66
	  226 2 0 130 227 15 80 160 227 20 70 159 229 12 192 160 225 15 16 160 225 138 1 0 
	  234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 127 1
	  0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 220 69 159 229 12 192 160
	  225 15 16 160 225 123 1 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 
	  0 82 225 8 48 160 147 112 1 0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 
	  4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 101 1 0
	  154 3 32 192 227 0 6 162 232 8 160 66 226 2 0 130 227 4 224 79 226 3 0 32 226 8 32 
	  155 229 0 32 66 226 0 0 82 225 8 48 160 147 90 1 0 154 3 32 192 227 32 4 162 232
	  8 160 66 226 2 0 130 227 76 69 159 229 12 192 160 225 15 16 160 225 86 1 0 234 4 
	  224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 75 1 0 154 
	  3 32 192 227 16 4 162 232 8 160 66 226 2 0 130 227 5 64 160 227 4 80 160 225 16 4 
	  154 232 48 133 159 229 14 224 160 225 68 32 155 229 60 32 146 229 4 16 143 226 2 240 
	  160 225 12 192 160 225 32 4 154 232 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 
	  226 0 0 82 225 8 48 160 147 53 1 0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0
	  130 227 0 6 154 232 16 4 154 232 15 16 160 225 55 1 0 234 32 4 154 232 4 224 79 226 
	  3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 37 1 0 154 3 32 192
	  227 48 0 162 232 8 80 66 226 2 0 130 227 0 144 154 229 4 224 79 226 3 0 32 226 8 
	  32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 25 1 0 154 3 32 192 227 32 4 162 232 
	  8 160 66 226 2 0 130 227 76 68 159 229 12 192 160 225 15 16 160 225 21 1 0 234 4
	  224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 10 1 0 154
	  3 32 192 227 16 4 162 232 8 160 66 226 2 0 130 227 15 80 160 227 4 68 159 229 12 
	  192 160 225 15 16 160 225 5 1 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 
	  0 0 82 225 8 48 160 147 250 0 0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 
	  204 67 159 229 12 192 160 225 15 16 160 225 246 0 0 234 4 224 79 226 3 0 32
	  226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 235 0 0 154 3 32 192 227 48 
	  0 162 232 8 80 66 226 2 0 130 227 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226
	  0 0 82 225 8 48 160 147 224 0 0 154 3 32 192 227 0 6 162 232 8 160 66 226 2 0 130
	  227 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 213 
	  0 0 154 3 32 192 227 32 4 162 232 8 160 66 226 2 0 130 227 48 67 159 229 12 192 160 
	  225 15 16 160 225 209 0 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0
	  0 82 225 8 48 160 147 198 0 0 154 3 32 192 227 16 4 162 232 8 160 66 226 2 0 130 
	  227 5 64 160 227 4 80 160 225 16 4 154 232 28 131 159 229 14 224 160 225 68 32 155
	  229 60 32 146 229 4 16 143 226 2 240 160 225 12 192 160 225 32 4 154 232 4 224 79
	  226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 176 0 0 154 3 32 
	  192 227 48 0 162 232 8 80 66 226 2 0 130 227 0 6 154 232 16 4 154 232 15 16 160 225 
	  178 0 0 234 32 4 154 232 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82
	  225 8 48 160 147 160 0 0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 0 
	  144 154 229 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 
	  148 0 0 154 3 32 192 227 32 4 162 232 8 160 66 226 2 0 130 227 56 66 159 229 12
	  192 160 225 15 16 160 225 144 0 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 
	  226 0 0 82 225 8 48 160 147 133 0 0 154 3 32 192 227 16 4 162 232 8 160 66 226 2
	  0 130 227 15 80 160 227 244 65 159 229 12 192 160 225 15 16 160 225 128 0 0 234 4
	  224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 117 0 0 154 
	  3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 176 65 159 229 12 192 160 225 
	  15 16 160 225 113 0 0 234 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 
	  225 8 48 160 147 102 0 0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 4 224 
	  79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 91 0 0 154 3
	  32 192 227 0 6 162 232 8 160 66 226 2 0 130 227 4 224 79 226 3 0 32 226 8 32 155 
	  229 0 32 66 226 0 0 82 225 8 48 160 147 80 0 0 154 3 32 192 227 32 4 162 232 8 160
	  66 226 2 0 130 227 32 65 159 229 12 192 160 225 15 16 160 225 76 0 0 234 4 224 79
	  226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 65 0 0 154 3 32 192 
	  227 16 4 162 232 8 160 66 226 2 0 130 227 5 64 160 227 4 80 160 225 16 4 154 232 
	  8 129 159 229 14 224 160 225 68 32 155 229 60 32 146 229 4 16 143 226 2 240 160 
	  225 12 192 160 225 32 4 154 232 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0
	  0 82 225 8 48 160 147 43 0 0 154 3 32 192 227 48 0 162 232 8 80 66 226 2 0 130 227 
	  0 6 154 232 16 4 154 232 15 16 160 225 45 0 0 234 32 4 154 232 4 224 79 226 3 0 
	  32 226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 27 0 0 154 3 32 192 227 48
	  0 162 232 8 80 66 226 2 0 130 227 0 6 154 232 16 4 154 232 2 4 154 232 29 0 0 234
	  4 112 160 225 64 64 159 229 12 192 160 225 15 16 160 225 26 0 0 234 4 112 133 229
	  63 64 160 227 2 4 154 232 1 240 160 225 16 8 0 0 175 1 128 0 24 8 0 0 175 2 128 0
	  32 8 0 0 175 3 128 0 15 0 0 0 175 2 128 0 175 1 128 0 175 3 128 0 175 4 128 0 4 240 
	  31 229 0 0 0 0 4 240 31 229 0 0 0 0 4 240 31 229 0 0 0 0 4 240 31 229 0 0 0 0 4
	  240 31 229 0 0 0 0 4 240 31 229 0 0 0 0 4 240 31 229 0 0 0 0 0 0 0 168 0 0 0 0 0 
	  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
	  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
	 ((2100 . 32772) (2096 . 32771) (2092 . 32769)
	  (2088 . 32770) (2080 . 32771) (2072 . 32770) (2064 . 32769))
	 ((32769 . "x") (32770 . "y") (32771 . "z") (32772 . "tak"))
	 ((2156 . "_dfv") (2148 . "_apl") (2140 . "fx-") (2132 . "fx>=?") (2124 . "_lkp")
	  (2116 . "_mkc") (2108 . "_gc"))))))



;; tak -- Cortex-M3
((unpack-above-heap
  (link
   #(#vu8(223 0 0 0 
	  79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 
	  0 15 0 191 156 191 79 240 8 3 0 240 250 188 32 240 3 2 162 232 2
	  4 162 241 8 10 66 240 2 0 223 248 180 73 79 234 12 12 79 234 12 12 15 242 12 5 15
	  241 4 1 0 240 234 188 0 240 186 188 79 234 15 14 79 234 12 12 78 240 0 14 128 240
	  3 0 219 248 8 32 162 241 8 2 178 235 0 15 0 191 156 191 79 240 16 3 0 240 208 188
	  32 240 3 2 162 232 2 4 162 241 8 12 162 232 0 18 162 241 8 10 66 240 2 0 223 248 
	  116 73 79 234 12 12 79 234 12 12 15 241 4 1 0 240 194 188 79 234 15 14 79 234 12 12 
	  78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 
	  8 3 0 240 166 188 32 240 3 2 162 232 16 4 162 241 8 10 66 240 2 0 223 248 44 73
	  79 234 12 12 79 234 12 12 15 241 4 1 0 240 156 188 79 234 4 5 154 232 16 4 223 248 
	  56 137 79 234 14 14 79 234 12 12 219 248 68 32 210 248 60 32 15 241 4 1 151 70 0
	  191 79 234 12 12 154 232 0 6 154 232 2 4 148 240 47 15 0 191 8 191 0 240 8 184 223 
	  248 224 72 79 234 12 12 79 234 12 12 0 240 118 188 79 234 15 14 79 234 12 12 78 
	  240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 
	  3 0 240 90 188 32 240 3 2 162 232 2 4 162 241 8 10 66 240 2 0 223 248 156 72 79 
	  234 12 12 79 234 12 12 15 241 4 1 0 240 80 188 79 234 15 14 79 234 12 12 78 240 0 14
	  128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 
	  52 188 32 240 3 2 162 232 16 4 162 241 8 10 66 240 2 0 79 240 15 5 79 234 15 14 79
	  234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156
	  191 79 240 8 3 0 240 22 188 32 240 3 2 162 232 0 6 162 241 8 10 66 240 2 0 79 234
	  15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 
	  0 191 156 191 79 240 8 3 0 240 250 187 32 240 3 2 162 232 32 4 162 241 8 10 66 240
	  2 0 223 248 220 71 79 234 12 12 79 234 12 12 15 241 4 1 0 240 240 187 79 234 15 14 
	  79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191
	  156 191 79 240 8 3 0 240 212 187 32 240 3 2 162 232 16 4 162 241 8 10 66 240 2 0 
	  79 240 15 5 223 248 128 71 79 234 12 12 79 234 12 12 15 241 4 1 0 240 200 187 79 
	  234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 
	  15 0 191 156 191 79 240 8 3 0 240 172 187 32 240 3 2 162 232 48 0 162 241 8 5 66 240 
	  2 0 223 248 56 71 79 234 12 12 79 234 12 12 15 241 4 1 0 240 162 187 79 234 15 14 
	  79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191
	  156 191 79 240 8 3 0 240 134 187 32 240 3 2 162 232 48 0 162 241 8 5 66 240 2 0 79 
	  234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 
	  0 15 0 191 156 191 79 240 8 3 0 240 106 187 32 240 3 2 162 232 0 6 162 241 8 10 66
	  240 2 0 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 
	  2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 78 187 32 240 3 2 162 232 32 4 162 241 
	  8 10 66 240 2 0 223 248 128 70 79 234 12 12 79 234 12 12 15 241 4 1 0 240 68 187 
	  79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 
	  0 15 0 191 156 191 79 240 8 3 0 240 40 187 32 240 3 2 162 232 16 4 162 241 8 10
	  66 240 2 0 79 240 5 4 79 234 4 5 154 232 16 4 223 248 84 134 79 234 14 14 79 234 
	  12 12 219 248 68 32 210 248 60 32 15 241 4 1 151 70 0 191 79 234 12 12 154 232 32 
	  4 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 
	  0 15 0 191 156 191 79 240 8 3 0 240 244 186 32 240 3 2 162 232 48 0 162 241 8 5
	  66 240 2 0 154 232 0 6 154 232 16 4 15 241 4 1 0 240 248 186 154 232 32 4 79 234 
	  15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0
	  191 156 191 79 240 8 3 0 240 206 186 32 240 3 2 162 232 48 0 162 241 8 5 66 240 2
	  0 218 248 0 144 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 
	  241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 176 186 32 240 3 2 162 232 32 
	  4 162 241 8 10 66 240 2 0 223 248 72 69 79 234 12 12 79 234 12 12 15 241 4 1 0 240 
	  166 186 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 
	  0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 138 186 32 240 3 2 162 232 16 4 
	  162 241 8 10 66 240 2 0 79 240 15 5 223 248 240 68 79 234 12 12 79 234 12 12 15 241 
	  4 1 0 240 126 186 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 
	  162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 98 186 32 240 3 2 162 232 
	  48 0 162 241 8 5 66 240 2 0 223 248 168 68 79 234 12 12 79 234 12 12 15 241 4 1 0 
	  240 88 186 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 0
	  2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 60 186 32 240 3 2 162 232 48 0 162 
	  241 8 5 66 240 2 0 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 
	  162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 32 186 32 240 3 2 162 232 
	  0 6 162 241 8 10 66 240 2 0 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 
	  248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 4 186 32 240 3 2 
	  162 232 32 4 162 241 8 10 66 240 2 0 223 248 228 67 79 234 12 12 79 234 12 12 15 
	  241 4 1 0 240 250 185 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 
	  32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 222 185 32 240 3 2 162 
	  232 16 4 162 241 8 10 66 240 2 0 79 240 5 4 79 234 4 5 154 232 16 4 223 248 192 131
	  79 234 14 14 79 234 12 12 219 248 68 32 210 248 60 32 15 241 4 1 151 70 0 191 79 
	  234 12 12 154 232 32 4 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8
	  32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 170 185 32 240 3 2 162
	  232 48 0 162 241 8 5 66 240 2 0 154 232 0 6 154 232 16 4 15 241 4 1 0 240 174 185
	  154 232 32 4 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 
	  241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 132 185 32 240 3 2 162 232 48 0
	  162 241 8 5 66 240 2 0 218 248 0 144 79 234 15 14 79 234 12 12 78 240 0 14 128 240 
	  3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 102 185
	  32 240 3 2 162 232 32 4 162 241 8 10 66 240 2 0 223 248 180 66 79 234 12 12 79 234 
	  12 12 15 241 4 1 0 240 92 185 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 
	  219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 64 185 32 240
	  3 2 162 232 16 4 162 241 8 10 66 240 2 0 79 240 15 5 223 248 96 66 79 234 12 12 
	  79 234 12 12 15 241 4 1 0 240 52 185 79 234 15 14 79 234 12 12 78 240 0 14 128 240 
	  3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 24 185 32
	  240 3 2 162 232 48 0 162 241 8 5 66 240 2 0 223 248 12 66 79 234 12 12 79 234 12 
	  12 15 241 4 1 0 240 14 185 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 
	  248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 242 184 32 240 3 2
	  162 232 48 0 162 241 8 5 66 240 2 0 79 234 15 14 79 234 12 12 78 240 0 14 128 240
	  3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 214 184 
	  32 240 3 2 162 232 0 6 162 241 8 10 66 240 2 0 79 234 15 14 79 234 12 12 78 240 0 
	  14 128 240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 
	  186 184 32 240 3 2 162 232 32 4 162 241 8 10 66 240 2 0 223 248 84 65 79 234 12 
	  12 79 234 12 12 15 241 4 1 0 240 176 184 79 234 15 14 79 234 12 12 78 240 0 14 128
	  240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 148 
	  184 32 240 3 2 162 232 16 4 162 241 8 10 66 240 2 0 79 240 5 4 79 234 4 5 154 232 
	  16 4 223 248 44 129 79 234 14 14 79 234 12 12 219 248 68 32 210 248 60 32 15 241 4
	  1 151 70 0 191 79 234 12 12 154 232 32 4 79 234 15 14 79 234 12 12 78 240 0 14 128 
	  240 3 0 219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 96 
	  184 32 240 3 2 162 232 48 0 162 241 8 5 66 240 2 0 154 232 0 6 154 232 16 4 15 241
	  4 1 0 240 100 184 154 232 32 4 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 
	  219 248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 58 184 32 240
	  3 2 162 232 48 0 162 241 8 5 66 240 2 0 154 232 0 6 154 232 16 4 154 232 2 4 0 240 
	  62 184 79 234 4 7 223 248 72 64 79 234 12 12 79 234 12 12 15 241 4 1 0 240 54 184 
	  197 248 4 112 79 240 63 4 154 232 2 4 143 70 0 191 248 9 0 0 175 1 128 0 0 10 0 
	  0 175 2 128 0 8 10 0 0 175 3 128 0 15 0 0 0 175 2 128 0 175 1 128 0 175 3 128 0 175 
	  4 128 0 0 74 151 70 0 0 0 0 0 74 151 70 0 0 0 0 0 74 151 70 0 0 0 0 0 74 151 70 
	  0 0 0 0 0 74 151 70 0 0 0 0 0 74 151 70 0 0 0 0 0 74 151 70 0 0 0 0 0 0 2 160 0 0 
	  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
	  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) 
	 ((2588 . 32772) (2584 . 32771) (2580 . 32769) (2576 . 32770) (2568 . 32771)
	  (2560 . 32770) (2552 . 32769))
	 ((32769 . "x") (32770 . "y") (32771 . "z") (32772 . "tak"))
	 ((2644 . "_dfv") (2636 . "_apl") (2628 . "fx-") (2620 . "fx>=?") (2612 . "_lkp")
	  (2604 . "_mkc") (2596 . "_gc"))))))



;; ARM
(define atak
  (unpack-above-heap
   (link 
    #(#vu8(223 3 0 0 
	   4 0 85 225 6 64 160 81 1 240 160 81 4 224 79 226 3 0 32 226 8 32 
	   155 229 24 32 66 226 0 0 82 225 32 48 160 147 55 0 0 154 3 32 192 
	   227 2 4 162 232 8 192 66 226 64 16 162 232 8 192 66 226 32 16 162 
	   232 8 192 66 226 16 16 162 232 8 160 66 226 2 0 130 227 4 64 68 
	   226 15 16 160 225 232 255 255 234 192 0 154 232 128 1 151 232 0 80 152 
	   229 4 224 79 226 3 0 32 226 8 32 155 229 0 32 66 226 0 0 82 
	   225 8 48 160 147 32 0 0 154 3 32 192 227 16 4 162 232 8 160 66 
	   226 2 0 130 227 4 64 71 226 15 16 160 225 215 255 255 234 4 112 154 
	   229 160 0 151 232 192 0 151 232 0 112 151 229 4 224 79 226 3 0 32 
	   226 8 32 155 229 0 32 66 226 0 0 82 225 8 48 160 147 14 0 0 154 3 32 192 
	   227 16 4 162 232 8 160 66 226 2 0 130 227 4 64 71 226 15 16 160 
	   225 197 255 255 234 4 96 160 225 32 4 154 232 16 4 154 232 4 160 154 
	   229 4 160 154 229 4 160 154 229 2 4 154 232 189 255 255 234 4 240 31 
	   229 0 0 0 0 0 0 0 0 0 0 0 0 0) () () ((272 . "_gc"))))))



;; Cortex-M3
(define atak
  (unpack-above-heap
   (link 
    #(#vu8(223 3 0 0 
	   181 235 4 15 0 191 92 191 79 234 6 4 143 70 0 191 79 234 15 14 79
	   234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 241 24 2 178 
	   235 0 15 0 191 156 191 79 240 32 3 0 240 124 184 32 240 3 2 162 
	   232 2 4 162 241 8 12 162 232 64 16 162 241 8 12 162 232 32 16 162 
	   241 8 12 162 232 16 16 162 241 8 10 66 240 2 0 164 241 4 4 15 
	   241 4 1 255 247 202 191 154 232 192 0 151 232 128 1 216 248 0 80 79 
	   234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 248 8 32 162 
	   241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 240 72 184 32 
	   240 3 2 162 232 16 4 162 241 8 10 66 240 2 0 167 241 4 4 15 
	   241 4 1 255 247 162 191 218 248 4 112 151 232 160 0 151 232 192 0 215 
	   248 0 112 79 234 15 14 79 234 12 12 78 240 0 14 128 240 3 0 219 
	   248 8 32 162 241 0 2 178 235 0 15 0 191 156 191 79 240 8 3 0 
	   240 30 184 32 240 3 2 162 232 16 4 162 241 8 10 66 240 2 0 167 
	   241 4 4 15 241 4 1 255 247 120 191 79 234 4 6 154 232 32 4 154 
	   232 16 4 218 248 4 160 218 248 4 160 218 248 4 160 154 232 2 4 255 
	   247 104 191 0 74 151 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0) () () ((312 . "_gc"))))))



Last updated January 15, 2012

bioe-hubert-at-sourceforge.net