• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1;/*++
2;
3;Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4;This program and the accompanying materials
5;are licensed and made available under the terms and conditions of the BSD License
6;which accompanies this distribution.  The full text of the license may be found at
7;http://opensource.org/licenses/bsd-license.php
8;
9;THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10;WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11;
12;Module Name:
13;
14;  Power10U64.c
15;
16;Abstract:
17;
18;  Calculates Operand * 10 ^ Power
19;
20;--*/
21;
22;#include "Tiano.h"
23;---------------------------------------------------------------------------
24    .686
25    .model  flat,C
26    .code
27
28MultU64x32    PROTO   C
29;---------------------------------------------------------------------------
30;
31;UINT64
32;MultU64x32 (
33;  IN UINT64   Multiplicand,
34;  IN UINTN    Multiplier
35;  );
36;
37;UINT64
38;Power10U64 (
39;  IN UINT64   Operand,
40;  IN UINTN    Power
41;  )
42;/*++
43;
44;Routine Description:
45;
46;  Raise 10 to the power of Power, and multiply the result with Operand
47;
48;Arguments:
49;
50;  Operand  - multiplicand
51;  Power    - power
52;
53;Returns:
54;
55;  Operand * 10 ^ Power
56;
57;--*/
58Power10U64 PROC
59  push   ebp
60  mov    ebp, esp
61  mov    eax, dword ptr [ebp + 8]; dword ptr Operand[0]
62  mov    edx, dword ptr [ebp + 0Ch]; dword ptr Operand[4]
63  mov    ecx, dword ptr [ebp + 10h] ;Power
64  jcxz   _Power10U64_Done
65
66_Power10U64_Wend:
67  push   ecx
68  push   10
69  push   [ebp + 0Ch]; dword ptr Operand[4]
70  push   [ebp + 8]; dword ptr Operand[0]
71  call   MultU64x32
72  add    esp, 0cH
73  pop    ecx
74  mov    [ebp + 8] , eax; dword ptr Operand[0]
75  mov    [ebp + 0Ch] , edx; dword ptr Operand[4]
76  loop   _Power10U64_Wend
77
78_Power10U64_Done:
79
80  pop    ebp
81  ret
82Power10U64 ENDP
83	END
84