LargeInteger.st
changeset 4255 73212f63b6a6
parent 4254 3846b94301b8
child 4256 04905f1fa63f
equal deleted inserted replaced
4254:3846b94301b8 4255:73212f63b6a6
  2189                     : "0"   ((unsigned long)(__carry)),
  2189                     : "0"   ((unsigned long)(__carry)),
  2190                       "1"   ((unsigned long)(((unsigned *)__src)[0])) );
  2190                       "1"   ((unsigned long)(((unsigned *)__src)[0])) );
  2191 
  2191 
  2192             ((unsigned int *)(__src + __ptrDelta))[0] = __sum;
  2192             ((unsigned int *)(__src + __ptrDelta))[0] = __sum;
  2193             __src += 4;  
  2193             __src += 4;  
       
  2194 
  2194             if (__carry == 0) {
  2195             if (__carry == 0) {
  2195                 while (__src <= __srcLast4) {
  2196                 while (__src <= __srcLast4) {
  2196                     /* copy over */
  2197                     /* copy over words */
  2197                     ((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
  2198                     ((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
  2198                     __src += 4;
  2199                     __src += 4;
  2199                 }
  2200                 }
  2200                 break;
  2201                 while (__src <= __srcLast) {
       
  2202                     /* copy over bytes */
       
  2203                     __src[__ptrDelta] = __src[0];
       
  2204                     __src ++;
       
  2205                 }
       
  2206                 goto doneSource;
  2201             }
  2207             }
  2202         }
  2208         }
  2203 # else 
  2209 # else 
  2204 #  if defined(i386) && defined(WIN32)
  2210 #  if defined(i386) && defined(WIN32)
  2205         /*
  2211         /*
  2221 
  2227 
  2222             ((unsigned int *)(__src + __ptrDelta))[0] = __sum;
  2228             ((unsigned int *)(__src + __ptrDelta))[0] = __sum;
  2223             __src += 4;  
  2229             __src += 4;  
  2224             if (__carry == 0) {
  2230             if (__carry == 0) {
  2225                 while (__src <= __srcLast4) {
  2231                 while (__src <= __srcLast4) {
  2226                     /* copy over */
  2232                     /* copy over words */
  2227                     ((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
  2233                     ((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
  2228                     __src += 4;
  2234                     __src += 4;
  2229                 }
  2235                 }
  2230                 break;
  2236                 while (__src <= __srcLast) {
       
  2237                     /* copy over bytes */
       
  2238                     __src[__ptrDelta] = __src[0];
       
  2239                     __src ++;
       
  2240                 }
       
  2241                 goto doneSource;
  2231             }
  2242             }
  2232         }
  2243         }
  2233 #  else 
  2244 #  else 
  2234 #   ifdef alpha64
  2245 #   ifdef alpha64
  2235         /*
  2246         /*
  2243             ((unsigned int *)(__src + __ptrDelta))[0] = __sum /* & 0xFFFF */;
  2254             ((unsigned int *)(__src + __ptrDelta))[0] = __sum /* & 0xFFFF */;
  2244             __src += 4;  
  2255             __src += 4;  
  2245             __carry = __sum >> 32;
  2256             __carry = __sum >> 32;
  2246             if (__carry == 0) {
  2257             if (__carry == 0) {
  2247                 while (__src <= __srcLast4) {
  2258                 while (__src <= __srcLast4) {
  2248                     /* copy over */
  2259                     /* copy over words */
  2249                     ((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
  2260                     ((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
  2250                     __src += 4;
  2261                     __src += 4;
  2251                 }
  2262                 }
  2252                 break;
  2263                 while (__src <= __srcLast) {
       
  2264                     /* copy over bytes */
       
  2265                     __src[__ptrDelta] = __src[0];
       
  2266                     __src ++;
       
  2267                 }
       
  2268                 goto doneSource;
  2253             }
  2269             }
  2254         }
  2270         }
  2255 #   endif /* alpha64 */
  2271 #   endif /* alpha64 */
  2256 #  endif /* i386 & WIN32 */
  2272 #  endif /* i386 & WIN32 */
  2257 # endif /* i386 & GNUC */
  2273 # endif /* i386 & GNUC */
  2278             __carry >>= 8;
  2294             __carry >>= 8;
  2279             __src++;
  2295             __src++;
  2280         }
  2296         }
  2281 #endif /* __LSBFIRST */
  2297 #endif /* __LSBFIRST */
  2282 
  2298 
       
  2299     doneSource: ;
  2283         __dst = __src + __ptrDelta;
  2300         __dst = __src + __ptrDelta;
  2284         while (__dst <= __dstLast) {
  2301         while (__dst <= __dstLast) {
  2285             __dst[0] = __carry /* & 0xFF */;
  2302             __dst[0] = __carry /* & 0xFF */;
  2286             __carry >>= 8;
  2303             __carry >>= 8;
  2287             __dst++;
  2304             __dst++;
  3597 ! !
  3614 ! !
  3598 
  3615 
  3599 !LargeInteger class methodsFor:'documentation'!
  3616 !LargeInteger class methodsFor:'documentation'!
  3600 
  3617 
  3601 version
  3618 version
  3602     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.113 1999-06-02 12:56:46 cg Exp $'
  3619     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.114 1999-06-02 13:15:47 cg Exp $'
  3603 ! !
  3620 ! !