VirtualBox

Changeset 1888 in vbox for trunk/src/VBox/Runtime/win64


Ignore:
Timestamp:
Apr 3, 2007 2:48:08 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
20132
Message:

ASMMultU64ByU32DivByU32 (for TSC calculation).

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/win64/ASMMultU64ByU32DivByU32.asm

    r1875 r1888  
    11;; @file
    2 ; InnoTek Portable Runtime - ASMGetFlags().
     2; InnoTek Portable Runtime - ASMMultU64ByU32DivByU32().
    33;
    44
     
    2626BEGINCODE
    2727
    28 BEGINPROC_EXPORTED ASMGetFlags
    29         pushf
    30         pop     rax
     28;;
     29; Multiple a 64-bit by a 32-bit integer and divide the result by a 32-bit integer
     30; using a 96 bit intermediate result.
     31;
     32; @returns (u64A * u32B) / u32C. (rax)
     33; @param   u64A    rcx      The 64-bit value.
     34; @param   u32B    edx      The 32-bit value to multiple by A.
     35; @param   u32C    r8d      The 32-bit value to divide A*B by.
     36;
     37BEGINPROC_EXPORTED ASMMultU64ByU32DivByU32
     38        mov     r9d, edx                        ; r9  = B
     39        mov     rax, rcx                        ; rax = A
     40        xor     edx, edx                        ; rdx = 0
     41        mul     r9                              ; rax:rdx = A*B
     42        mov     ecx, r8d                        ; rcx = C (overly careful)
     43        div     rcx                             ; rax = A*B/C (rdx=reminder)
    3144        ret
    32 ENDPROC ASMGetFlags
     45ENDPROC ASMMultU64ByU32DivByU32
    3346
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette