home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,770 of 4,675   
   Kerr Mudd-John to wolfgang kern   
   Re: BASE64 again   
   30 Jun 17 13:37:36   
   
   From: admin@nospicedham.127.0.0.1   
      
   n Fri, 30 Jun 2017 10:16:19 +0100, wolfgang kern  wrote:   
      
      
   []   
   > now it's more than obvious that a direct 4:3 SMC gain at least   
   > 25 bytes against all 2:1 variants:   
   >   
   > all modifications can be done within the first two lines and   
   > the string itself is halfed and now fits the third line !   
      
   This was the realization for me; that the (eventual) B64 decoder was less than   
   a line's width.   
   I've been assuming that it must be the first line (bar a jmp past it, but even   
   that can be fixed up!) with the fixup code afterwards; how do you otherwise   
   deal with the crlf/cr/lf/nul possible line endings hitting the wrong fixup   
   locations?   
      
   the move code itself needs to be fixedup or written on the fly, so I leave it   
   'til after fixing in place.   
      
   > we had ~016B as stringstart for 2:1.   
   > now I made it 0184 (4 slide nops) to not have CRLF inbetween.   
   > even this are 25 byte more it allow REP MOVS after start-scan.   
   >   
   > further size reduction seems possible, I'll check.   
   >   
   > btw: you posted something to the other 'too long' thread,   
   > I see the header but can't open it.   
      
   Not that exciting: saved a jmp, cost a lodsb:   
      
   On Fri, 26 May 2017 08:24:38 +0100, Kerr Mudd-John  wrote:   
      
   ll63 bytes 252   
      
      
   Saved a few more! (OK just 1 in the 2:1 stage2 decoder)   
   ll64 bytes 249   
      
   ZRPRhF0XPR5F1PRRjF4gPa5LU1GI1GKRX+G=1GdSVG8+r6238wat083t+RUZ=rY=   
   662202Zffffff0222F6====MJ=20=17===eeee+++slOBI9UnoAlpinMIupasbaA   
   NE9E7jelperHQE9sAWKsuH8lpssMIG7asA9babaRKi8A99Wh8G7w7d8v7h8WKh8f   
   7I8sCoAlpadITw7YoH9f7=tAm6CAHNIcNIZWxsbyB3b3JsZCEk=   
      
      
   Here's the 47 byte b64 decoder (that I'm trying to fixup)   
      
   ->u100 l2E   
   1622:0100 AC             lodsb   
   1622:0101 3C 2B          cmp          al,2B   
   1622:0103 72 25          jb           012A   
   1622:0105 2C 41          sub          al,41   
   1622:0107 73 0A          jnb          0113   
   1622:0109 04 45          add          al,45   
   1622:010B 3C 33          cmp          al,33   
   1622:010D 77 0A          ja           0119   
   1622:010F B0 86          mov          al,86   
   1622:0111 1C 00          sbb          al,00   
   1622:0113 3C 1A          cmp          al,1A   
   1622:0115 72 02          jb           0119   
   1622:0117 2C 06          sub          al,06   
   1622:0119 41             inc          cx   
   1622:011A 41             inc          cx   
   1622:011B 83 E1 06       and          cx,0006   
   1622:011E D2 EC          shr          ah,cl   
   1622:0120 C0 E0 02       shl          al,02   
   1622:0123 D3 E0          shl          ax,cl   
   1622:0125 86 E0          xchg         ah,al   
   1622:0127 E3 01          jcxzw        012A   
   1622:0129 AA             stosb   
   1622:012A AC             lodsb   
   1622:012B 3C 3D          cmp          al,3D   
   1622:012D 75 D2          jnz          0101   
      
      
      
   --   
   Bah, and indeed, Humbug   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca