1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#################################################################
# #
# Copyright 2007, 2008 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
# PAGE ,132
.title op_forcenum.s
# .386
# .MODEL FLAT, C
.include "g_msf.si"
.include "linkage.si"
.INCLUDE "mval_def.si"
.sbttl op_forcenum
# PAGE +
.text
.extern s2n
# r10 - source mval
# rax - destination mval
# PUBLIC op_forcenum
ENTRY op_forcenum
pushq REG64_RET0
mv_force_defined REG64_RET1, l00
pushq REG64_RET1
mv_force_num REG64_RET1, l10
popq REG64_RET1
popq REG64_RET0
testw $mval_m_str,mval_w_mvtype(REG64_RET1)
je l20
testw $mval_m_num_approx,mval_w_mvtype(REG64_RET1)
je l40
l20: testw $mval_m_int_without_nm,mval_w_mvtype(REG64_RET1)
je l30
movw $mval_m_int,mval_w_mvtype(REG64_RET0)
movl mval_l_m1(REG64_RET1),REG32_ARG2
movl REG32_ARG2,mval_l_m1(REG64_RET0)
ret
l30: pushq REG_XFER_TABLE
movw $mval_m_nm,mval_w_mvtype(REG64_RET0)
movb mval_b_exp(REG64_RET1),REG8_ARG2
movb REG8_ARG2,mval_b_exp(REG64_RET0)
# Copy the only numeric part of Mval from [edx] to [eax].
movl mval_l_m0(REG64_RET1),REG32_ARG2
movl REG32_ARG2,mval_l_m0(REG64_RET0)
movl mval_l_m1(REG64_RET1),REG32_ARG2
movl REG32_ARG2,mval_l_m1(REG64_RET0)
popq REG_XFER_TABLE
ret
l40:
# Copy the Mval from [edx] to [eax].
pushq REG64_ARG0
pushq REG64_ARG1
movq REG64_RET0,REG64_ARG0
movq REG64_RET1,REG64_ARG1
movl $mval_byte_len,REG32_ARG3
REP
movsb
popq REG64_ARG1
popq REG64_ARG0
ret
# op_forcenum ENDP
# END
|