80 lines
1.7 KiB
ArmAsm
80 lines
1.7 KiB
ArmAsm
#################################################################
|
|
# #
|
|
# 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
|