Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Your asm code is relativity slow because use stack end write 8 times to memory. Check this one...</p> <pre><code>procedure DecodePixels(EncPixels: Byte; var DecPixels: TDecodedPixels); asm xor ecx, ecx add al, al rcl ecx, 8 add al, al rcl ecx, 8 add al, al rcl ecx, 8 add al, al rcl ecx, 1 mov [DecPixels + 4], ecx xor ecx, ecx add al, al rcl ecx, 8 add al, al rcl ecx, 8 add al, al rcl ecx, 8 add al, al rcl ecx, 1 mov [DecPixels], ecx end; </code></pre> <p>Maybe is even faster than code with lookup table!</p> <p>Improved version:</p> <pre><code>procedure DecodePixelsI(EncPixels: Byte; var DecPixels: TDecodedPixels); asm mov ecx, 0 //Faster than: xor ecx, ecx add al, al rcl ch, 1 add al, al rcl cl, 1 ror ecx, 16 add al, al rcl ch, 1 add al, al rcl cl, 1 mov [DecPixels + 4], ecx mov ecx, 0 //Faster than: xor ecx, ecx add al, al rcl ch, 1 add al, al rcl cl, 1 ror ecx, 16 add al, al rcl ch, 1 add al, al rcl cl, 1 mov [DecPixels], ecx end; </code></pre> <p>Version 3:</p> <pre><code>procedure DecodePixelsX(EncPixels: Byte; var DecPixels: TDecodedPixels); asm add al, al setc byte ptr[DecPixels + 7] add al, al setc byte ptr[DecPixels + 6] add al, al setc byte ptr[DecPixels + 5] add al, al setc byte ptr[DecPixels + 4] add al, al setc byte ptr[DecPixels + 3] add al, al setc byte ptr[DecPixels + 2] add al, al setc byte ptr[DecPixels + 1] setnz byte ptr[DecPixels] end; </code></pre> <p>Version 4:</p> <pre><code>const Uint32DecPix : array [0..15] of cardinal = ( $00000000, $00000001, $00000100, $00000101, $00010000, $00010001, $00010100, $00010101, $01000000, $01000001, $01000100, $01000101, $01010000, $01010001, $01010100, $01010101 ); procedure DecodePixelsY(EncPixels: byte; var DecPixels: TDecodedPixels); inline; begin pcardinal(@DecPixels)^ := Uint32DecPix[EncPixels and $0F]; pcardinal(cardinal(@DecPixels) + 4)^ := Uint32DecPix[(EncPixels and $F0) shr 4]; end; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload