VirtualBox

source: vbox/trunk/src/VBox/Runtime/win64/ASMMultU64ByU32DivByU32.asm@ 2069

Last change on this file since 2069 was 1888, checked in by vboxsync, 18 years ago

ASMMultU64ByU32DivByU32 (for TSC calculation).

File size: 1.9 KB
Line 
1;; @file
2; InnoTek Portable Runtime - ASMMultU64ByU32DivByU32().
3;
4
5;
6; Copyright (C) 2006 InnoTek Systemberatung GmbH
7;
8; This file is part of VirtualBox Open Source Edition (OSE), as
9; available from http://www.virtualbox.org. This file is free software;
10; you can redistribute it and/or modify it under the terms of the GNU
11; General Public License as published by the Free Software Foundation,
12; in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13; distribution. VirtualBox OSE is distributed in the hope that it will
14; be useful, but WITHOUT ANY WARRANTY of any kind.
15;
16; If you received this file as part of a commercial VirtualBox
17; distribution, then only the terms of your commercial VirtualBox
18; license agreement apply instead of the previous paragraph.
19;
20
21;*******************************************************************************
22;* Header Files *
23;*******************************************************************************
24%include "iprt/asmdefs.mac"
25
26BEGINCODE
27
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)
44 ret
45ENDPROC ASMMultU64ByU32DivByU32
46
Note: See TracBrowser for help on using the repository browser.

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