<div>Hi Brad,</div><div><br></div><div>Thank you for pointing it out - very funny.</div><div><br></div><div>I re-ran the test with varied compiler declares set, inspired by your test. In all cases was standard-bindings and extended-bindings on.</div>

<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>With safe off and interrupts off:</div><div>The u8vector-ref fx+ etc are both inlined indeed, independent of if they're ##-prefixed or not. They generate equivalent C and assembly outputs. This is the same thing as your test shows.</div>

</blockquote><div><br></div><div>So this is exactly the expected behavior, it's inlined, great.</div><div><br></div><div>Here comes something funny:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<div>With safe is on and interrupts off:</div><div>The only difference with the previous one in expansion, is that u8vector-length now (not ##-prefixed) now brings with it a u8vector? test call.</div><div>And here's what's funny: it appears to me that each evaluation step is made by putting on the stack, together with the host procedure's state, an instruction for the respective procedure (##u8vector-ref ##fx+ etc.) to be invoked, and then the host procedure returns.</div>

<div>In this mode, ##u8vector-ref ##fx+ etc. are not inlined.</div><div>There seem to be some conditions that can make the host procedure not return, but I didn't quite understand until now what happens in those cases, i.e. if some kind of jump or call to ##u8vector-ref is made directly without a return being made or alike.</div>

</blockquote><div><br class="Apple-interchange-newline">This is really funny, I though just using ##-prefixes on procedures was enough for exactly those calls to be executed with the highest speed, but apparently that was not the case. I'd be interested what the motivation for this is, perhaps some kind of safety mechanism for stack overflows??</div>

<div><br></div><div>Why can't ##u8vector-ref ##fx+ etc. be inlined, wouldn't that somehow contribute??</div><div><br></div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>With safe off and interrupts on:</div>

<div>Same as safe off and interrupts off, plus three interrupt checks.</div><div><br></div><div>With safe on and interrupts on:</div><div>Same as safe on and interupts off, plus six interrupt checks.</div></blockquote><div>

<br></div><div><br></div><div>Regarding the possibility of using ##u8vector-ref for accessing arbitrary memory addresses, I'm starting to think that clearly can be done, though the details would need to be worked out. A pure ##sysmem-byte-ref would be slightly faster though, as it would not need the operation of adding together the "zeroref-u8vector"'s base address (0) with the requested offset.</div>

<div><br></div><div>Best regards,</div><div>Mikael</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>(In the assembly, highlighted the central loop with yellow. In the first test it's clear to me exactly which it is, in the second test it's only an approximate guess.)</div>

<div><br></div><div><b>First test, safe off, using procedures under their ordinary names and by their ##-prefixed names respectively, both produce equivalent C and assembly output</b></div><div><br></div><div>Code variant 1:</div>

<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="courier new, monospace">(declare (standard-bindings)</font></div></div>
<div><div><font face="courier new, monospace">         (extended-bindings)</font></div></div><div><div><font face="courier new, monospace">         (not interrupts-enabled)</font></div></div><div><div><font face="courier new, monospace">         (not safe)</font></div>


</div><div><div><font face="courier new, monospace">         )</font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace">(define (inc-u8v u with-what)</font></div>


</div><div><div><font face="courier new, monospace">  (let ((l (u8vector-length u)))</font></div></div><div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div></div><div>


<div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div></div><div><div><font face="courier new, monospace">    (let loop ((at 0))</font></div></div><div><div><font face="courier new, monospace">      (if (fx< at l)</font></div>


</div><div><div><font face="courier new, monospace">        (begin</font></div></div><div><div><font face="courier new, monospace">          (u8vector-set! u at (fx+ (u8vector-ref u at) 123))</font></div></div><div><div>

<font face="courier new, monospace">          (loop (fx+ at 1)))))</font></div>
</div><div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div></div><div><div><font face="courier new, monospace">    ))</font></div></div></blockquote><div><div><br>

</div><div><div>Code variant 2:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="courier new, monospace">(declare (standard-bindings)</font></div><div><font face="courier new, monospace">         (extended-bindings)</font></div>

<div><font face="courier new, monospace">         (not interrupts-enabled)</font></div><div><font face="courier new, monospace">         (not safe)</font></div><div><font face="courier new, monospace">         )</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">(define (inc-u8v u with-what)</font></div><div><font face="courier new, monospace">  (let ((l (u8vector-length u)))</font></div>

<div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div><div><font face="courier new, monospace">    (let loop ((at 0))</font></div>

<div><font face="courier new, monospace">      (if (##fx< at l)</font></div><div><font face="courier new, monospace">        (begin</font></div><div><font face="courier new, monospace">          (##u8vector-set! u at (##fx+ (##u8vector-ref u at) 123))</font></div>

<div><font face="courier new, monospace">          (loop (##fx+ at 1)))))</font></div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div><div><font face="courier new, monospace">    ))</font></div>

</blockquote><div><br class="Apple-interchange-newline"></div></div>
<div>Expansion:</div></div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="courier new, monospace">(define inc-u8v</font></div></div></div><div><div><div><font face="courier new, monospace">  (lambda (u with-what)</font></div>


</div></div><div><div><div><font face="courier new, monospace">    (let ((l ('#<procedure #2 ##u8vector-length> u)))</font></div></div></div><div><div><div><font face="courier new, monospace">      (let ((begin-temp.3 ('#<procedure #3 ##c-code> "asm(\"noop\");")))</font></div>


</div></div><div><div><div><font face="courier new, monospace">        (let ((begin-temp.2 ('#<procedure #3 ##c-code> "asm(\"noop\");")))</font></div></div></div><div><div><div><font face="courier new, monospace">          (let ((begin-temp.1</font></div>


</div></div><div><div><div><font face="courier new, monospace">                 (letrec ((loop (lambda (u l at)</font></div></div></div><div><div><div><font face="courier new, monospace">                                  (if ('#<procedure #4 ##fx<> at l)</font></div>


</div></div><div><div><div><font face="courier new, monospace">                                      (let ((begin-temp.0 ('#<procedure #5 ##u8vector-set!> u at ('#<procedure #6 ##fx+> ('#<procedure #7 ##u8vector-ref> u at) 123))))</font></div>


</div></div><div><div><div><font face="courier new, monospace">                                        (loop u l ('#<procedure #6 ##fx+> at 1)))</font></div></div></div><div><div><div><font face="courier new, monospace">                                      #!void))))</font></div>


</div></div><div><div><div><font face="courier new, monospace">                   (loop u l 0))))</font></div></div></div><div><div><div><font face="courier new, monospace">            ('#<procedure #3 ##c-code> "asm(\"noop\");")))))))</font></div>


</div></div></blockquote><div><div><br></div></div><div>Assembly:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="courier new, monospace">        .file   "t1.c"</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .intel_syntax</font></div></div></div><div><div><div><font face="courier new, monospace">        .text</font></div></div></div><div><div><div><font face="courier new, monospace">        .align 2</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .type   _Z12___init_procv, @function</font></div></div></div><div><div><div><font face="courier new, monospace">_Z12___init_procv:</font></div></div>

</div>
<div><div><div><font face="courier new, monospace">.LFB17:</font></div></div></div><div><div><div><font face="courier new, monospace">        push    %ebp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI0:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI1:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___lp</font></div>


</div></div><div><div><div><font face="courier new, monospace">        add     %eax, 16</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR ___G__20_t1, %eax</font></div></div>


</div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___G__20_t1</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR ___G__20_t1+4, %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, 0</font></div></div></div><div><div><div><font face="courier new, monospace">        pop     %ebp</font></div></div></div><div><div><div>


<font face="courier new, monospace">        ret</font></div></div></div><div><div><div><font face="courier new, monospace">.LFE17:</font></div></div></div><div><div><div><font face="courier new, monospace">        .size   _Z12___init_procv, .-_Z12___init_procv</font></div>


</div></div><div><div><div><font face="courier new, monospace">.globl __gxx_personality_v0</font></div></div></div><div><div><div><font face="courier new, monospace">        .align 2</font></div></div></div><div><div><div>


<font face="courier new, monospace">.globl ____20_t1</font></div></div></div><div><div><div><font face="courier new, monospace">        .type   ____20_t1, @function</font></div></div></div><div><div><div><font face="courier new, monospace">____20_t1:</font></div>


</div></div><div><div><div><font face="courier new, monospace">.LFB18:</font></div></div></div><div><div><div><font face="courier new, monospace">        push    %ebp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI2:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI3:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, OFFSET FLAT:___module_descr</font></div>


</div></div><div><div><div><font face="courier new, monospace">        pop     %ebp</font></div></div></div><div><div><div><font face="courier new, monospace">        ret</font></div></div></div><div><div><div><font face="courier new, monospace">.LFE18:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .size   ____20_t1, .-____20_t1</font></div></div></div><div><div><div><font face="courier new, monospace">        .align 2</font></div></div></div><div>


<div><div><font face="courier new, monospace">        .type   _Z15___H_inc_2d_u8vP25___processor_state_struct, @function</font></div></div></div><div><div><div><font face="courier new, monospace">_Z15___H_inc_2d_u8vP25___processor_state_struct:</font></div>


</div></div><div><div><div><font face="courier new, monospace">.LFB16:</font></div></div></div><div><div><div><font face="courier new, monospace">        push    %ebp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI4:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI5:</font></div></div></div><div><div><div><font face="courier new, monospace">        sub     %esp, 60</font></div>


</div></div><div><div><div><font face="courier new, monospace">.LCFI6:</font></div></div></div><div><div><div><font face="courier new, monospace">        cmp     DWORD PTR [%ebp+8], 0</font></div></div></div><div><div><div>


<font face="courier new, monospace">        sete    %al</font></div></div></div><div><div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div></div></div><div><div><div><font face="courier new, monospace">        test    %eax, %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        je      .L6</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], OFFSET FLAT:_ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl</font></div>


</div></div><div><div><div><font face="courier new, monospace">        jmp     .L8</font></div></div></div><div><div><div><font face="courier new, monospace">.L6:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+24]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-48], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-44], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+36]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+40]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+44]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-32], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+48]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-28], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+52]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-24], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___lp</font></div></div></div><div><div><div><font face="courier new, monospace">        add     %eax, 48</font></div></div></div>


<div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-52], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+56]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-56], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-56]</font></div></div></div><div><div><div><font face="courier new, monospace">        add     %eax, 7</font></div></div>


</div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">.L9:</font></div></div></div><div><div><div><font face="courier new, monospace">        jmp     [DWORD PTR [%ebp-20]]</font></div></div></div><div><div><div>

<font face="courier new, monospace">.L10:</font></div>
</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+76]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        cmp     %eax, 2</font></div></div></div><div><div><div><font face="courier new, monospace">        sete    %al</font></div></div></div><div><div><div>


<font face="courier new, monospace">        movzx   %eax, %al</font></div></div></div><div><div><div><font face="courier new, monospace">        test    %eax, %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        jne     .L11</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-52]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+60], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___gstate+292</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-56], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        jmp     .L13</font></div></div></div>


<div><div><div><font face="courier new, monospace">.L11:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-36]</font></div></div></div><div><div><div><font face="courier new, monospace">        dec     %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div></div></div><div><div><div><font face="courier new, monospace">        shr     %eax, 8</font></div></div></div>


<div><div><div><font face="courier new, monospace">        sal     %eax, 2</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-32], %eax</font></div></div></div><div>


<div><div><font face="courier new, monospace">#APP</font></div></div></div><div><div><div><font face="courier new, monospace">        noop</font></div></div></div><div><div><div><font face="courier new, monospace">        noop</font></div>


</div></div><div><div><div><font face="courier new, monospace">#NO_APP</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div></div></div><div><div>


<div><font face="courier new, monospace">        sub     %eax, 4</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-40]</font></div></div></div><div><div><div>


<font face="courier new, monospace">        mov     DWORD PTR [%eax], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-28], 0</font></div></div></div><div><div>


<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-52]</font></div></div></div><div><div><div><font face="courier new, monospace">        add     %eax, 16</font></div></div></div><div><div><div>


<font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        sub     DWORD PTR [%ebp-44], 16</font></div></div></div><div>


<div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-32]</font></div></div></div><div><div><div><font face="courier new, monospace">        cmp     DWORD PTR [%ebp-28], %edx</font></div></div>


</div><div><div><div><font face="courier new, monospace">        jge     .L14</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">.L15:</font></div></div></div>


<div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-28]</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sar     %eax, 2</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, %eax</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-36]</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        lea     %eax, [%edx+%eax]</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 3</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        movzx   %eax, BYTE PTR [%eax]</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        movzx   %eax, %al</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sal     %eax, 2</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-24], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     DWORD PTR [%ebp-24], 492</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-28]</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sar     %eax, 2</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-36]</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        lea     %eax, [%edx+%eax]</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        lea     %edx, [%eax+3]</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-24]</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sar     %eax, 2</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     BYTE PTR [%edx], %al</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     DWORD PTR [%ebp-28], 4</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-32]</font></div>


</div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        cmp     DWORD PTR [%ebp-28], %eax</font></div></div></div><div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        jl      .L15</font></div>


</div></div><div><div><div><font face="courier new, monospace">.L14:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], -18</font></div></div></div><div><div><div>


<font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-40]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-56], %edx</font></div></div></div><div>


<div><div><font face="courier new, monospace">        jmp     .L16</font></div></div></div><div><div><div><font face="courier new, monospace">.L17:</font></div></div></div><div><div><div><font face="courier new, monospace">#APP</font></div>


</div></div><div><div><div><font face="courier new, monospace">        noop</font></div></div></div><div><div><div><font face="courier new, monospace">#NO_APP</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-4]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        add     DWORD PTR [%ebp-44], 16</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div></div></div><div><div><div><font face="courier new, monospace">        sub     %eax, 4</font></div></div>


</div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-56], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">.L16:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-56]</font></div></div></div><div><div>

<div>
<font face="courier new, monospace">        add     %eax, 11</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div></div></div><div><div><div><font face="courier new, monospace">        cmp     %eax, OFFSET FLAT:_Z15___H_inc_2d_u8vP25___processor_state_struct</font></div>


</div></div><div><div><div><font face="courier new, monospace">        sete    %al</font></div></div></div><div><div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div></div></div><div><div><div>


<font face="courier new, monospace">        test    %eax, %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        je      .L13</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-56]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        add     %eax, 7</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div></div></div>


<div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        jmp     .L9</font></div></div></div><div><div>


<div><font face="courier new, monospace">.L13:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-56]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+56], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-48]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+24], %edx</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-44]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+8], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-40]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+36], %edx</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-36]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+40], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-32]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+44], %edx</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-28]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+48], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-24]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+52], %edx</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-56]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">.L8:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-60]</font></div></div></div><div><div><div>


<font face="courier new, monospace">        leave</font></div></div></div><div><div><div><font face="courier new, monospace">        ret</font></div></div></div><div><div><div><font face="courier new, monospace">.LFE16:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .size   _Z15___H_inc_2d_u8vP25___processor_state_struct, .-_Z15___H_inc_2d_u8vP25___processor_state_struct</font></div></div></div><div><div><div><font face="courier new, monospace">        .align 2</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .type   _Z11___H__20_t1P25___processor_state_struct, @function</font></div></div></div><div><div><div><font face="courier new, monospace">_Z11___H__20_t1P25___processor_state_struct:</font></div>


</div></div><div><div><div><font face="courier new, monospace">.LFB15:</font></div></div></div><div><div><div><font face="courier new, monospace">        push    %ebp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI7:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div></div></div><div><div><div><font face="courier new, monospace">.LCFI8:</font></div></div></div><div><div><div><font face="courier new, monospace">        sub     %esp, 20</font></div>


</div></div><div><div><div><font face="courier new, monospace">.LCFI9:</font></div></div></div><div><div><div><font face="courier new, monospace">        cmp     DWORD PTR [%ebp+8], 0</font></div></div></div><div><div><div>


<font face="courier new, monospace">        sete    %al</font></div></div></div><div><div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div></div></div><div><div><div><font face="courier new, monospace">        test    %eax, %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        je      .L21</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], OFFSET FLAT:_ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl</font></div>


</div></div><div><div><div><font face="courier new, monospace">        jmp     .L23</font></div></div></div><div><div><div><font face="courier new, monospace">.L21:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+36]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-8], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+40]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-4], %eax</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___lp</font></div>


</div></div><div><div><div><font face="courier new, monospace">        add     %eax, 16</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-12], %eax</font></div></div>


</div><div><div><div><font face="courier new, monospace">.L24:</font></div></div></div><div><div><div><font face="courier new, monospace">.L25:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+76]</font></div></div></div><div><div><div><font face="courier new, monospace">        test    %eax, %eax</font></div></div>


</div><div><div><div><font face="courier new, monospace">        sete    %al</font></div></div></div><div><div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div></div></div><div><div><div><font face="courier new, monospace">        test    %eax, %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        jne     .L26</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div>


<div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-12]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+60], %edx</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___gstate+292</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-16], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        jmp     .L28</font></div></div></div><div><div><div><font face="courier new, monospace">.L26:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-12]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        add     %eax, 32</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR ___G_inc_2d_u8v, %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-4], -18</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-16], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">.L29:</font></div></div></div><div><div>

<div>
<font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-16]</font></div></div></div><div><div><div><font face="courier new, monospace">        add     %eax, 11</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        cmp     %eax, OFFSET FLAT:_Z11___H__20_t1P25___processor_state_struct</font></div></div></div><div><div><div><font face="courier new, monospace">        sete    %al</font></div>


</div></div><div><div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div></div></div><div><div><div><font face="courier new, monospace">        test    %eax, %eax</font></div></div></div><div>

<div>
<div><font face="courier new, monospace">        je      .L28</font></div></div></div><div><div><div><font face="courier new, monospace">        jmp     .L24</font></div></div></div><div><div><div><font face="courier new, monospace">.L28:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-16]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+56], %edx</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-4]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+40], %edx</font></div>


</div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-16]</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], %eax</font></div>


</div></div><div><div><div><font face="courier new, monospace">.L23:</font></div></div></div><div><div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-20]</font></div></div></div><div><div>

<div>
<font face="courier new, monospace">        leave</font></div></div></div><div><div><div><font face="courier new, monospace">        ret</font></div></div></div><div><div><div><font face="courier new, monospace">.LFE15:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .size   _Z11___H__20_t1P25___processor_state_struct, .-_Z11___H__20_t1P25___processor_state_struct</font></div></div></div><div><div><div><font face="courier new, monospace">        .section        .rodata</font></div>


</div></div><div><div><div><font face="courier new, monospace">.LC0:</font></div></div></div><div><div><div><font face="courier new, monospace">        .string " t1"</font></div></div></div><div><div><div><font face="courier new, monospace">        .data</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .align 32</font></div></div></div><div><div><div><font face="courier new, monospace">        .type   ___module_descr, @object</font></div></div></div>


<div><div><div><font face="courier new, monospace">        .size   ___module_descr, 136</font></div></div></div><div><div><div><font face="courier new, monospace">___module_descr:</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   406002</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   .LC0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   1</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   ___lp</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   ___lbl_tbl</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   5</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   _Z12___init_procv</font></div></div></div><div><div>


<div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .local  ___lp</font></div></div></div><div><div><div><font face="courier new, monospace">        .comm   ___lp,4,4</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .align 4</font></div></div></div><div><div><div><font face="courier new, monospace">        .type   _ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl, @object</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .size   _ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl, 16</font></div></div></div><div><div><div><font face="courier new, monospace">_ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   .L10</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   .L17</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .align 4</font></div></div></div><div><div><div><font face="courier new, monospace">        .type   _ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl, @object</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .size   _ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl, 12</font></div></div></div><div><div><div><font face="courier new, monospace">_ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl:</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   .L25</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .align 32</font></div></div></div><div><div><div><font face="courier new, monospace">        .type   ___lbl_tbl, @object</font></div></div></div><div>


<div><div><font face="courier new, monospace">        .size   ___lbl_tbl, 96</font></div></div></div><div><div><div><font face="courier new, monospace">___lbl_tbl:</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   1030</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   -2</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   .LC0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   118</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   _Z11___H__20_t1P25___processor_state_struct</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   2054</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   -2</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   630</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   3198</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   4101</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .long   0</font></div></div></div><div><div><div><font face="courier new, monospace">        .ident  "GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"</font></div>


</div></div><div><div><div><font face="courier new, monospace">        .section        .note.GNU-stack,"",@progbits</font></div></div></div></blockquote><div><div><br></div><div><br></div><div><br></div><div><br>

</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Second test, safe is on, using ##-prefixed procedure name variants</div><div><br></div><div>Code:</div><div><br></div></div>

<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="courier new, monospace">(declare (standard-bindings)</font></div></div></div><div><div><div><font face="courier new, monospace">         (extended-bindings)</font></div>

</div></div><div><div><div><font face="courier new, monospace">         (not interrupts-enabled)</font></div></div></div><div><div><div><font face="courier new, monospace">         ; (not safe)</font></div></div></div><div>

<div><div><font face="courier new, monospace">         )</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">(define (inc-u8v u with-what)</font></div>

</div></div><div><div><div><font face="courier new, monospace">  (let ((l (u8vector-length u)))</font></div></div></div><div><div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div>

</div></div><div><div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div></div></div><div><div><div><font face="courier new, monospace">    (let loop ((at 0))</font></div>

</div></div><div><div><div><font face="courier new, monospace">      (if (##fx< at l)</font></div></div></div><div><div><div><font face="courier new, monospace">        (begin</font></div></div></div><div><div><div><font face="courier new, monospace">          (##u8vector-set! u at (##fx+ (##u8vector-ref u at) 123))</font></div>

</div></div><div><div><div><font face="courier new, monospace">          (loop (##fx+ at 1)))))</font></div></div></div><div><div><div><font face="courier new, monospace">    (##c-code "asm(\"noop\");")</font></div>

</div></div><div><div><div><font face="courier new, monospace">    ))</font></div></div></div></blockquote><div><div><div><br></div></div><div><br></div><div>Expansion:</div><div><br></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<div><font face="courier new, monospace">(define inc-u8v</font></div><div><font face="courier new, monospace">  (lambda (u with-what)</font></div><div><font face="courier new, monospace">    (let ((l (if ('#<procedure #2 ##u8vector?> u) ('#<procedure #3 ##u8vector-length> u) ('#<procedure #4 u8vector-length> u))))</font></div>

<div><font face="courier new, monospace">      (let ((begin-temp.3 ('#<procedure #5 ##c-code> "asm(\"noop\");")))</font></div><div><font face="courier new, monospace">        (let ((begin-temp.2 ('#<procedure #5 ##c-code> "asm(\"noop\");")))</font></div>

<div><font face="courier new, monospace">          (let ((begin-temp.1</font></div><div><font face="courier new, monospace">                 (letrec ((loop (lambda (u l at)</font></div><div><font face="courier new, monospace">                                  (if ('#<procedure #6 ##fx<> at l)</font></div>

<div><font face="courier new, monospace">                                      (let ((begin-temp.0 ('#<procedure #7 ##u8vector-set!> u at ('#<procedure #8 ##fx+> ('#<procedure #9 ##u8vector-ref> u at) 123))))</font></div>

<div><font face="courier new, monospace">                                        (loop u l ('#<procedure #8 ##fx+> at 1)))</font></div><div><font face="courier new, monospace">                                      #!void))))</font></div>

<div><font face="courier new, monospace">                   (loop u l 0))))</font></div><div><font face="courier new, monospace">            ('#<procedure #5 ##c-code> "asm(\"noop\");")))))))</font></div>

</blockquote><div><div><br></div><div>Assembly:</div><div><br></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="courier new, monospace">        .file   "t1.c"</font></div>

<div><font face="courier new, monospace">        .intel_syntax</font></div><div><font face="courier new, monospace">        .text</font></div><div><font face="courier new, monospace">        .align 2</font></div><div><font face="courier new, monospace">        .type   _Z12___init_procv, @function</font></div>

<div><font face="courier new, monospace">_Z12___init_procv:</font></div><div><font face="courier new, monospace">.LFB17:</font></div><div><font face="courier new, monospace">        push    %ebp</font></div><div><font face="courier new, monospace">.LCFI0:</font></div>

<div><font face="courier new, monospace">        mov     %ebp, %esp</font></div><div><font face="courier new, monospace">.LCFI1:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___lp</font></div>

<div><font face="courier new, monospace">        add     %eax, 16</font></div><div><font face="courier new, monospace">        mov     DWORD PTR ___G__20_t1, %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___G__20_t1</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR ___G__20_t1+4, %eax</font></div><div><font face="courier new, monospace">        mov     %eax, 0</font></div><div><font face="courier new, monospace">        pop     %ebp</font></div>

<div><font face="courier new, monospace">        ret</font></div><div><font face="courier new, monospace">.LFE17:</font></div><div><font face="courier new, monospace">        .size   _Z12___init_procv, .-_Z12___init_procv</font></div>

<div><font face="courier new, monospace">.globl __gxx_personality_v0</font></div><div><font face="courier new, monospace">        .align 2</font></div><div><font face="courier new, monospace">.globl ____20_t1</font></div>

<div><font face="courier new, monospace">        .type   ____20_t1, @function</font></div><div><font face="courier new, monospace">____20_t1:</font></div><div><font face="courier new, monospace">.LFB18:</font></div><div>
<font face="courier new, monospace">        push    %ebp</font></div>
<div><font face="courier new, monospace">.LCFI2:</font></div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div><div><font face="courier new, monospace">.LCFI3:</font></div><div><font face="courier new, monospace">        mov     %eax, OFFSET FLAT:___module_descr</font></div>

<div><font face="courier new, monospace">        pop     %ebp</font></div><div><font face="courier new, monospace">        ret</font></div><div><font face="courier new, monospace">.LFE18:</font></div><div><font face="courier new, monospace">        .size   ____20_t1, .-____20_t1</font></div>

<div><font face="courier new, monospace">        .align 2</font></div><div><font face="courier new, monospace">        .type   _Z15___H_inc_2d_u8vP25___processor_state_struct, @function</font></div><div><font face="courier new, monospace">_Z15___H_inc_2d_u8vP25___processor_state_struct:</font></div>

<div><font face="courier new, monospace">.LFB16:</font></div><div><font face="courier new, monospace">        push    %ebp</font></div><div><font face="courier new, monospace">.LCFI4:</font></div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div>

<div><font face="courier new, monospace">.LCFI5:</font></div><div><font face="courier new, monospace">        sub     %esp, 68</font></div><div><font face="courier new, monospace">.LCFI6:</font></div><div><font face="courier new, monospace">        cmp     DWORD PTR [%ebp+8], 0</font></div>

<div><font face="courier new, monospace">        sete    %al</font></div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div><div><font face="courier new, monospace">        test    %eax, %eax</font></div>

<div><font face="courier new, monospace">        je      .L6</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-68], OFFSET FLAT:_ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl</font></div>

<div><font face="courier new, monospace">        jmp     .L8</font></div><div><font face="courier new, monospace">.L6:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+24]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-48], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+8]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-44], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+40]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+44]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-32], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+48]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-28], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+52]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-24], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___lp</font></div>

<div><font face="courier new, monospace">        add     %eax, 48</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-56], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+56]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-60]</font></div>

<div><font face="courier new, monospace">        add     %eax, 7</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], %eax</font></div>

<div><font face="courier new, monospace">.L9:</font></div><div><font face="courier new, monospace">        jmp     [DWORD PTR [%ebp-20]]</font></div><div><font face="courier new, monospace">.L10:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+76]</font></div><div><font face="courier new, monospace">        cmp     %eax, 2</font></div><div><font face="courier new, monospace">        sete    %al</font></div>

<div><font face="courier new, monospace">        movzx   %eax, %al</font></div><div><font face="courier new, monospace">        test    %eax, %eax</font></div><div><font face="courier new, monospace">        jne     .L11</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-56]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+60], %edx</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___gstate+292</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], %eax</font></div><div><font face="courier new, monospace">        jmp     .L13</font></div>

<div><font face="courier new, monospace">.L11:</font></div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-52], %edx</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-52]</font></div><div><font face="courier new, monospace">        and     %eax, 3</font></div><div><font face="courier new, monospace">        cmp     %eax, 1</font></div>

<div><font face="courier new, monospace">        jne     .L14</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-52]</font></div><div><font face="courier new, monospace">        dec     %eax</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        and     %eax, 248</font></div><div><font face="courier new, monospace">        cmp     %eax, 168</font></div>

<div><font face="courier new, monospace">        je      .L16</font></div><div><font face="courier new, monospace">.L14:</font></div><div><font face="courier new, monospace">        mov     BYTE PTR [%ebp-61], 1</font></div>

<div><font face="courier new, monospace">        jmp     .L17</font></div><div><font face="courier new, monospace">.L16:</font></div><div><font face="courier new, monospace">        mov     BYTE PTR [%ebp-61], 0</font></div>

<div><font face="courier new, monospace">.L17:</font></div><div><font face="courier new, monospace">        movzx   %eax, BYTE PTR [%ebp-61]</font></div><div><font face="courier new, monospace">        test    %al, %al</font></div>

<div><font face="courier new, monospace">        jne     .L18</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace">        dec     %eax</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        shr     %eax, 8</font></div><div><font face="courier new, monospace">        sal     %eax, 2</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-32], %eax</font></div><div><font face="courier new, monospace">        jmp     .L20</font></div><div><font face="courier new, monospace">.L21:</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-32], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace">        add     %eax, 24</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], %eax</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        add     %eax, 28</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div><div><font face="courier new, monospace">        add     DWORD PTR [%ebp-44], 32</font></div><div><font face="courier new, monospace">.L20:</font></div>

<div><font face="courier new, monospace">#APP</font></div><div><font face="courier new, monospace">        noop</font></div><div><font face="courier new, monospace">        noop</font></div><div><font face="courier new, monospace">#NO_APP</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        sub     %eax, 4</font></div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-40]</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%eax], %edx</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-28], 0</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-56]</font></div>

<div><font face="courier new, monospace">        add     %eax, 112</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div><div><font face="courier new, monospace">        sub     DWORD PTR [%ebp-44], 16</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">.L22:</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sub     %eax, 4</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-40]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax], %edx</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sub     %eax, 8</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-36]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax], %edx</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sub     %eax, 12</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-32]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax], %edx</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sub     %eax, 16</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-28]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax], %edx</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-28]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-36], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-56]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %edx, 32</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-40], %edx</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        sub     DWORD PTR [%ebp-44], 32</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax+76], 2</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR ___G__23__23_fx_3c_+4</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-60], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        jmp     .L23</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">.L24:</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        cmp     DWORD PTR [%ebp-36], -2</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        je      .L25</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 16</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%eax]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-32], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 24</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%eax]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-36], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-56]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %edx, 48</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-40], %edx</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp+8]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax+76], 2</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR ___G__23__23_u8vector_2d_ref+4</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-60], %eax</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        jmp     .L23</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">.L27:</font></div><div>

<font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-32], 492</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-56]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %edx, 64</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-40], %edx</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp+8]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax+76], 2</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR ___G__23__23_fx_2b_+4</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-60], %eax</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        jmp     .L23</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">.L28:</font></div><div>

<font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-28], %edx</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 16</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-32], %eax</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 24</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-36], %eax</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-56]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 80</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-40], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax+76], 3</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR ___G__23__23_u8vector_2d_set_21_+4</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-60], %edx</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        jmp     .L23</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">.L29:</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 16</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%eax]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-36], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-32], 4</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp-56]</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        add     %eax, 96</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-40], %eax</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%eax+76], 2</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     %edx, DWORD PTR ___G__23__23_fx_2b_+4</font></div>

<div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        mov     DWORD PTR [%ebp-60], %edx</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,153)">        jmp     .L23</font></div>

<div><font face="courier new, monospace">.L30:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-28], %eax</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        add     %eax, 20</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-32], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        add     %eax, 24</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace">        add     %eax, 28</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div>

<div><font face="courier new, monospace">        add     DWORD PTR [%ebp-44], 32</font></div><div><font face="courier new, monospace">        jmp     .L22</font></div><div><font face="courier new, monospace">.L25:</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], -18</font></div><div><font face="courier new, monospace">        add     DWORD PTR [%ebp-44], 32</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace">        sub     %eax, 4</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], %eax</font></div>

<div><font face="courier new, monospace">        jmp     .L23</font></div><div><font face="courier new, monospace">.L31:</font></div><div><font face="courier new, monospace">#APP</font></div><div><font face="courier new, monospace">        noop</font></div>

<div><font face="courier new, monospace">#NO_APP</font></div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-4]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-36], %edx</font></div>

<div><font face="courier new, monospace">        add     DWORD PTR [%ebp-44], 16</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        sub     %eax, 4</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], %eax</font></div><div><font face="courier new, monospace">        jmp     .L23</font></div>

<div><font face="courier new, monospace">.L18:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        sub     %eax, 4</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-40]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-44]</font></div>

<div><font face="courier new, monospace">        sub     %eax, 8</font></div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax], %edx</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-56]</font></div><div><font face="courier new, monospace">        add     %eax, 16</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-40], %eax</font></div>

<div><font face="courier new, monospace">        sub     DWORD PTR [%ebp-44], 32</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+76], 1</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR ___G_u8vector_2d_length+4</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-60], %edx</font></div><div><font face="courier new, monospace">.L23:</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-60]</font></div><div><font face="courier new, monospace">        add     %eax, 11</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div>

<div><font face="courier new, monospace">        cmp     %eax, OFFSET FLAT:_Z15___H_inc_2d_u8vP25___processor_state_struct</font></div><div><font face="courier new, monospace">        sete    %al</font></div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div>

<div><font face="courier new, monospace">        test    %eax, %eax</font></div><div><font face="courier new, monospace">        je      .L13</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-60]</font></div>

<div><font face="courier new, monospace">        add     %eax, 7</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], %eax</font></div>

<div><font face="courier new, monospace">        jmp     .L9</font></div><div><font face="courier new, monospace">.L13:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-60]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+56], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-48]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+24], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-44]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+8], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-40]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+36], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+40], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-32]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+44], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-28]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+48], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-24]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+52], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-60]</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-68], %eax</font></div><div><font face="courier new, monospace">.L8:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-68]</font></div>

<div><font face="courier new, monospace">        leave</font></div><div><font face="courier new, monospace">        ret</font></div><div><font face="courier new, monospace">.LFE16:</font></div><div><font face="courier new, monospace">        .size   _Z15___H_inc_2d_u8vP25___processor_state_struct, .-_Z15___H_inc_2d_u8vP25___processor_state_struct</font></div>

<div><font face="courier new, monospace">        .align 2</font></div><div><font face="courier new, monospace">        .type   _Z11___H__20_t1P25___processor_state_struct, @function</font></div><div><font face="courier new, monospace">_Z11___H__20_t1P25___processor_state_struct:</font></div>

<div><font face="courier new, monospace">.LFB15:</font></div><div><font face="courier new, monospace">        push    %ebp</font></div><div><font face="courier new, monospace">.LCFI7:</font></div><div><font face="courier new, monospace">        mov     %ebp, %esp</font></div>

<div><font face="courier new, monospace">.LCFI8:</font></div><div><font face="courier new, monospace">        sub     %esp, 20</font></div><div><font face="courier new, monospace">.LCFI9:</font></div><div><font face="courier new, monospace">        cmp     DWORD PTR [%ebp+8], 0</font></div>

<div><font face="courier new, monospace">        sete    %al</font></div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div><div><font face="courier new, monospace">        test    %eax, %eax</font></div>

<div><font face="courier new, monospace">        je      .L35</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], OFFSET FLAT:_ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl</font></div>

<div><font face="courier new, monospace">        jmp     .L37</font></div><div><font face="courier new, monospace">.L35:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+36]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-8], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+40]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-4], %eax</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___lp</font></div>

<div><font face="courier new, monospace">        add     %eax, 16</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-12], %eax</font></div><div><font face="courier new, monospace">.L38:</font></div>

<div><font face="courier new, monospace">.L39:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax+76]</font></div>

<div><font face="courier new, monospace">        test    %eax, %eax</font></div><div><font face="courier new, monospace">        sete    %al</font></div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div>

<div><font face="courier new, monospace">        test    %eax, %eax</font></div><div><font face="courier new, monospace">        jne     .L40</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-12]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+60], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR ___gstate+292</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-16], %eax</font></div><div><font face="courier new, monospace">        jmp     .L42</font></div><div><font face="courier new, monospace">.L40:</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-12]</font></div><div><font face="courier new, monospace">        add     %eax, 32</font></div><div><font face="courier new, monospace">        mov     DWORD PTR ___G_inc_2d_u8v, %eax</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-4], -18</font></div><div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-8]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-16], %edx</font></div>

<div><font face="courier new, monospace">.L43:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-16]</font></div><div><font face="courier new, monospace">        add     %eax, 11</font></div>

<div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%eax]</font></div><div><font face="courier new, monospace">        cmp     %eax, OFFSET FLAT:_Z11___H__20_t1P25___processor_state_struct</font></div>

<div><font face="courier new, monospace">        sete    %al</font></div><div><font face="courier new, monospace">        movzx   %eax, %al</font></div><div><font face="courier new, monospace">        test    %eax, %eax</font></div>

<div><font face="courier new, monospace">        je      .L42</font></div><div><font face="courier new, monospace">        jmp     .L38</font></div><div><font face="courier new, monospace">.L42:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-16]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+56], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp+8]</font></div>

<div><font face="courier new, monospace">        mov     %edx, DWORD PTR [%ebp-4]</font></div><div><font face="courier new, monospace">        mov     DWORD PTR [%eax+40], %edx</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-16]</font></div>

<div><font face="courier new, monospace">        mov     DWORD PTR [%ebp-20], %eax</font></div><div><font face="courier new, monospace">.L37:</font></div><div><font face="courier new, monospace">        mov     %eax, DWORD PTR [%ebp-20]</font></div>

<div><font face="courier new, monospace">        leave</font></div><div><font face="courier new, monospace">        ret</font></div><div><font face="courier new, monospace">.LFE15:</font></div><div><font face="courier new, monospace">        .size   _Z11___H__20_t1P25___processor_state_struct, .-_Z11___H__20_t1P25___processor_state_struct</font></div>

<div><font face="courier new, monospace">        .section        .rodata</font></div><div><font face="courier new, monospace">.LC0:</font></div><div><font face="courier new, monospace">        .string " t1"</font></div>

<div><font face="courier new, monospace">        .data</font></div><div><font face="courier new, monospace">        .align 32</font></div><div><font face="courier new, monospace">        .type   ___module_descr, @object</font></div>

<div><font face="courier new, monospace">        .size   ___module_descr, 136</font></div><div><font face="courier new, monospace">___module_descr:</font></div><div><font face="courier new, monospace">        .long   406002</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   .LC0</font></div><div><font face="courier new, monospace">        .long   1</font></div><div>

<font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   ___lp</font></div><div>

<font face="courier new, monospace">        .long   ___lbl_tbl</font></div><div><font face="courier new, monospace">        .long   11</font></div><div><font face="courier new, monospace">        .long   0</font></div><div>

<font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z12___init_procv</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .local  ___lp</font></div><div><font face="courier new, monospace">        .comm   ___lp,4,4</font></div>

<div><font face="courier new, monospace">        .align 32</font></div><div><font face="courier new, monospace">        .type   _ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl, @object</font></div><div><font face="courier new, monospace">        .size   _ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl, 40</font></div>

<div><font face="courier new, monospace">_ZZ15___H_inc_2d_u8vP25___processor_state_structE11___hlbl_tbl:</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   .L10</font></div>

<div><font face="courier new, monospace">        .long   .L21</font></div><div><font face="courier new, monospace">        .long   .L24</font></div><div><font face="courier new, monospace">        .long   .L27</font></div>

<div><font face="courier new, monospace">        .long   .L28</font></div><div><font face="courier new, monospace">        .long   .L29</font></div><div><font face="courier new, monospace">        .long   .L30</font></div>

<div><font face="courier new, monospace">        .long   .L31</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .align 4</font></div><div>
<font face="courier new, monospace">        .type   _ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl, @object</font></div>
<div><font face="courier new, monospace">        .size   _ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl, 12</font></div><div><font face="courier new, monospace">_ZZ11___H__20_t1P25___processor_state_structE11___hlbl_tbl:</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   .L39</font></div><div><font face="courier new, monospace">        .long   0</font></div><div>

<font face="courier new, monospace">        .align 32</font></div><div><font face="courier new, monospace">        .type   ___lbl_tbl, @object</font></div><div><font face="courier new, monospace">        .size   ___lbl_tbl, 192</font></div>

<div><font face="courier new, monospace">___lbl_tbl:</font></div><div><font face="courier new, monospace">        .long   1030</font></div><div><font face="courier new, monospace">        .long   -2</font></div><div><font face="courier new, monospace">        .long   .LC0</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   118</font></div><div><font face="courier new, monospace">        .long   0</font></div><div>
<font face="courier new, monospace">        .long   0</font></div>
<div><font face="courier new, monospace">        .long   _Z11___H__20_t1P25___processor_state_struct</font></div><div><font face="courier new, monospace">        .long   8198</font></div><div><font face="courier new, monospace">        .long   -2</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   630</font></div><div>
<font face="courier new, monospace">        .long   0</font></div>
<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div><div><font face="courier new, monospace">        .long   3198</font></div>

<div><font face="courier new, monospace">        .long   12309</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div>

<div><font face="courier new, monospace">        .long   3198</font></div><div><font face="courier new, monospace">        .long   61461</font></div><div><font face="courier new, monospace">        .long   0</font></div>
<div>
<font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div><div><font face="courier new, monospace">        .long   3198</font></div><div><font face="courier new, monospace">        .long   61461</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div><div><font face="courier new, monospace">        .long   3198</font></div>

<div><font face="courier new, monospace">        .long   61461</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div>

<div><font face="courier new, monospace">        .long   3198</font></div><div><font face="courier new, monospace">        .long   61461</font></div><div><font face="courier new, monospace">        .long   0</font></div>
<div>
<font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div><div><font face="courier new, monospace">        .long   3198</font></div><div><font face="courier new, monospace">        .long   28693</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div><div><font face="courier new, monospace">        .long   3198</font></div>

<div><font face="courier new, monospace">        .long   4101</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   _Z15___H_inc_2d_u8vP25___processor_state_struct</font></div>

<div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div><div><font face="courier new, monospace">        .long   0</font></div>

<div><font face="courier new, monospace">        .ident  "GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"</font></div><div><font face="courier new, monospace">        .section        .note.GNU-stack,"",@progbits</font></div>

<div><br></div></blockquote><div><div><br></div><div><br></div><br><div class="gmail_quote">2012/8/9 Bradley Lucier <span dir="ltr"><<a href="mailto:lucier@math.purdue.edu" target="_blank">lucier@math.purdue.edu</a>></span><br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I don't know what you want to do, but this code:<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<div><div>(declare (standard-bindings)</div></div><div><div><span style="white-space:pre-wrap">     </span></div> (extended-bindings)</div><div><div><span style="white-space:pre-wrap">      </span></div> (not interrupts-enabled)</div>


<div><div><span style="white-space:pre-wrap">       </span></div> (not safe))</div><div><div><br></div></div><div><div>(define (u8transfer in out)</div></div><div><div>  (do ((i (fx- (u8vector-length in) 1)  (fx- i 1)))</div></div>


<div><div>      ((fx< i 0))</div></div><div><div>    (u8vector-set! out i (u8vector-ref in i))))</div></div></blockquote><div><br></div><div>expands to</div><div><br></div><div><div>[Bradley-Luciers-MacBook-Pro:~/Downloads] lucier% gsc -cc-options "-save-temps" -keep-c -expansion fxtest.scm</div>


<div>Expansion:</div><div><br></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>(define u8transfer</div></div><div><div>  (lambda (in out)</div></div><div><div>    (letrec ((do-temp.0</div>


</div><div><div>              (lambda (in out i)</div></div><div><div>                (if ('#<procedure #2 ##fx<> i 0)</div></div><div><div>                    #!void</div></div><div><div>                    (let ((begin-temp.1 ('#<procedure #3 ##u8vector-set!> out i ('#<procedure #4 ##u8vector-ref> in i))))</div>


</div><div><div>                      (do-temp.0 in out ('#<procedure #5 ##fx-> i 1)))))))</div></div><div><div>      (let ((i ('#<procedure #5 ##fx-> ('#<procedure #6 ##u8vector-length> in) 1)))</div>


</div><div><div>        (if ('#<procedure #2 ##fx<> i 0)</div></div><div><div>            #!void</div></div><div><div>            (let ((begin-temp.1 ('#<procedure #3 ##u8vector-set!> out i ('#<procedure #4 ##u8vector-ref> in i))))</div>


</div><div><div>              (do-temp.0 in out ('#<procedure #5 ##fx-> i 1))))))))</div></div></blockquote><div><br></div><div>and the inner loop is</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<div><div>L14:</div></div><div><div>        movq    %rdx, %rax</div></div><div><div>        sarq    $2, %rax</div></div><div><div>        subq    $4, %rdx</div></div><div><div>        movzbl  7(%rsi,%rax), %ecx</div></div>


<div><div>        leaq    0(,%rcx,4), %r8</div></div><div><div>        movb    %cl, 7(%r9,%rax)</div></div><div><div>        jns     L14</div></div></blockquote><div><br></div><div>which seems to have about 1 extra instruction (I don't know what the load effective address is doing there).</div>


<div><br></div><div>Brad</div></div></blockquote></div><br></div>