Changeset 1650 for trunk/src


Ignore:
Timestamp:
Nov 9, 1999, 1:44:47 AM (26 years ago)
Author:
phaller
Message:

Add: numerous integer arithmetic functions

Location:
trunk/src/NTDLL
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/NTDLL/makefile

    r1585 r1650  
    1 # $Id: makefile,v 1.10 1999-11-03 23:28:04 sandervl Exp $
     1# $Id: makefile,v 1.11 1999-11-09 00:44:01 phaller Exp $
    22
    33#
     
    3232       crt.obj\
    3333       time.obj\
    34        unknown.obj
     34       unknown.obj\
     35       arith64.obj
    3536
    3637
     
    7980exception.obj: .\exception.cpp .\ntdll.h
    8081
     82arith64.obj: .\arith64.asm
    8183
    8284clean:
  • trunk/src/NTDLL/ntdll.def

    r1443 r1650  
    1 ; $Id: ntdll.def,v 1.19 1999-10-25 19:24:13 phaller Exp $
     1; $Id: ntdll.def,v 1.20 1999-11-09 00:44:01 phaller Exp $
    22
    33;Created by BLAST for IBM's compiler
     
    266266    RtlInitUnicodeString          = _RtlInitUnicodeString@8           @403
    267267    RtlFreeUnicodeString          = _RtlFreeUnicodeString@4           @377
    268     RtlFreeAnsiString             = _RtlFreeAnsiString@4              @373
     268    RtlFreeAnsiString             = _RtlFreeAnsiString@4             
    269269    RtlFreeOemString              = _RtlFreeOemString@4
    270270    RtlUnicodeStringToOemString   = _RtlUnicodeStringToOemString@12   @511
     
    299299    DebugBreak                    = ___regs_DebugBreak@4
    300300    RtlRaiseStatus                = _RtlRaiseStatus@4
    301     RtlRandom                     = _RtlRandom@4                      @466
     301    RtlRandom                     = _RtlRandom@4                     
    302302
    303303    RtlAcquirePebLock             = _RtlAcquirePebLock@0
     
    309309    RtlNormalizeProcessParams     = _RtlNormalizeProcessParams@4      @441
    310310    RtlNtStatusToDosError         = _RtlNtStatusToDosError@4          @442
    311     RtlGetNtProductType           = _RtlGetNtProductType@4            @390
    312     RtlEnlargedIntegerMultiply    = _RtlEnlargedIntegerMultiply@8     @341
    313     RtlExtendedIntegerMultiply    = _RtlExtendedIntegerMultiply@12    @358
    314     RtlExtendedLargeIntegerDivide = _RtlExtendedLargeIntegerDivide@16 @359
    315     RtlFormatCurrentUserKeyPath   = _RtlFormatCurrentUserKeyPath@4    @371
     311    RtlGetNtProductType           = _RtlGetNtProductType@4           
     312
     313 
     314; ------------------
     315; Integer Arithmetic
     316; ------------------
     317
     318    RtlLargeIntegerDivide         = _RtlLargeIntegerDivide@20         @462
     319    RtlLargeIntegerAdd            = _RtlLargeIntegerAdd@16            @460
     320    RtlEnlargedIntegerMultiply    = _RtlEnlargedIntegerMultiply@8     @371
     321    RtlEnlargedUnsignedMultiply   = _RtlEnlargedUnsignedMultiply@8    @373
     322    RtlEnlargedUnsignedDivide     = _RtlEnlargedUnsignedDivide@16     @372
     323    RtlExtendedLargeIntegerDivide = _RtlExtendedLargeIntegerDivide@16 @390
     324    RtlExtendedMagicDivide        = _RtlExtendedMagicDivide@20        @391
     325    RtlExtendedIntegerMultiply    = _RtlExtendedIntegerMultiply@12    @389
     326    RtlLargeIntegerShiftLeft      = _RtlLargeIntegerShiftLeft@12      @464
     327    RtlLargeIntegerShiftRight     = _RtlLargeIntegerShiftRight@12     @465
     328    RtlLargeIntegerArithmeticShift= _RtlLargeIntegerArithmeticShift@12 @461
     329    RtlLargeIntegerNegate         = _RtlLargeIntegerNegate@8          @463
     330    RtlLargeIntegerSubtract       = _RtlLargeIntegerSubtract@16       @466
     331    RtlConvertLongToLargeInteger  = _RtlConvertLongToLargeInteger@4   @316
     332    RtlConvertUlongToLargeInteger = _RtlConvertUlongToLargeInteger@4  @320
     333
     334
     335    RtlFormatCurrentUserKeyPath   = _RtlFormatCurrentUserKeyPath@4   
    316336    RtlOpenCurrentUser            = _RtlOpenCurrentUser@8
    317337    RtlDosPathNameToNtPathName_U  = _RtlDosPathNameToNtPathName_U@16  @338
     
    325345    RtlSecondsSince1970ToTime     = _RtlSecondsSince1970ToTime@8      @476
    326346    RtlSecondsSince1980ToTime     = _RtlSecondsSince1980ToTime@8      @477
    327     RtlQueryTimeZoneInformation   = _RtlQueryTimeZoneInformation@12   @463
     347    RtlQueryTimeZoneInformation   = _RtlQueryTimeZoneInformation@12   
    328348
    329349    RtlTimeToElapsedTimeFields    = _RtlTimeToElapsedTimeFields@8
  • trunk/src/NTDLL/rtl.cpp

    r638 r1650  
    1 /* $Id: rtl.cpp,v 1.7 1999-08-22 22:45:53 sandervl Exp $ */
     1/* $Id: rtl.cpp,v 1.8 1999-11-09 00:44:02 phaller Exp $ */
    22
    33/*
     
    499499/* longlong in VAC++ ? */
    500500
    501 INT WINAPI RtlEnlargedIntegerMultiply(INT factor1,
    502                                       INT factor2)
    503 {
    504   dprintf(("NTDLL: RtlEnlargedIntegerMultiply(%08xh,%08xh) not implemented.\n",
    505            factor1,
    506            factor2));
    507 
    508   return factor1 * factor2;
    509 }
     501extern INT WINAPI RtlEnlargedIntegerMultiply(INT factor1,
     502                                             INT factor2);
    510503
    511504
     
    513506 * RtlExtendedLargeIntegerDivide [NTDLL.359]
    514507 */
    515 INT WINAPI RtlExtendedLargeIntegerDivide(LARGE_INTEGER dividend,
    516                                          DWORD         divisor,
    517                                          LPDWORD       rest)
    518 {
    519 #if SIZEOF_LONG_LONG==8
    520    long long x1 = *(long long*)&dividend;
    521 
    522    if (*rest)
    523       *rest = x1 % divisor;
    524    return x1/divisor;
    525 #else
    526   dprintf(("NTDLL: RtlExtendedLargeIntegerDevice(%08xh,%08xh,%08xh) not implemented.\n",
    527            dividend,
    528            divisor,
    529            rest));
    530 
    531   return 0;
    532 #endif
    533 }
     508extern INT WINAPI RtlExtendedLargeIntegerDivide(LARGE_INTEGER dividend,
     509                                                DWORD         divisor,
     510                                                LPDWORD       rest);
    534511
    535512/******************************************************************************
     
    540517/* longlong in VAC++ ? */
    541518
    542 LARGE_INTEGER WINAPI RtlExtendedIntegerMultiply(LARGE_INTEGER factor1,
    543                                                 INT           factor2)
    544 {
    545   LARGE_INTEGER li;
    546 
    547   dprintf(("NTDLL: RtlExtendedIntegerMultiply(%08xh,%08xh) not implemented.\n",
    548            factor1,
    549            factor2));
    550 
    551   li.LowPart  = factor1.LowPart * factor2;
    552   li.HighPart = factor1.HighPart * factor2;
    553   // note: overflow from LowPart To HighPart NOT handled !
    554 
    555   return li;
    556 }
    557 
     519extern LARGE_INTEGER WINAPI RtlExtendedIntegerMultiply(LARGE_INTEGER factor1,
     520                                                       INT           factor2);
    558521
    559522/******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.