Changeset 1888 in vbox for trunk/src/VBox/Runtime/win64
- Timestamp:
- Apr 3, 2007 2:48:08 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 20132
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/win64/ASMMultU64ByU32DivByU32.asm
r1875 r1888 1 1 ;; @file 2 ; InnoTek Portable Runtime - ASM GetFlags().2 ; InnoTek Portable Runtime - ASMMultU64ByU32DivByU32(). 3 3 ; 4 4 … … 26 26 BEGINCODE 27 27 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 ; 37 BEGINPROC_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) 31 44 ret 32 ENDPROC ASM GetFlags45 ENDPROC ASMMultU64ByU32DivByU32 33 46
Note:
See TracChangeset
for help on using the changeset viewer.