dbgrules.ssl
来自「开放源码的编译器open watcom 1.6.0版的源代码」· SSL 代码 · 共 234 行
SSL
234 行
push_name >>bool:
GetInit
[GetName
| false:
>>false
| *:
GetFini
>>true
]
;
name_or_op_or_lnum:
[@parse_qualified_name % provided by the individual languages
| false:
[GetLineNum
| false:
#err_loc_and_want_operand
| *:
]
| *:
]
;
skip_pop >>bool:
[SkipCount
| 0:
>>false
| *:
PopEntry
>>true
]
;
push_symbol >>bool:
GetInit
[
| ET_MODULE_SPEC:
GetModCurr
@name_or_op_or_lnum
| *:
[@parse_qualified_name
| false:
>>false
| *:
[
| ET_MODULE_SPEC:
GetModNameLkup
@name_or_op_or_lnum
| *:
]
]
]
GetFini
>>true
;
push_token:
[@push_symbol
| false :
[PushNum
| false:
ScanSave
[
| ET_STRING_QUOTE:
@parse_string % provided by individual languages
| *:
ScanPop
#err_loc_and_want_operand
]
| *:
]
| *:
]
;
negate: % arithmetic negative of a value
PushInt( 0 )
StackSwap( 1 )
DoMinus
;
req_right_paren:
[
| ET_RIGHT_PAREN:
% endchoice
| *:
StackLValue( 0 )
ET_RIGHT_PAREN % cause error
]
;
perform_add:
[SSLVersion( version_dip )
| false:
StackLRValue( 1 )
StackRValue( 0 )
[StackClass( 1 )
| stk_near_ptr, stk_far_ptr:
@scale_int
| *:
[StackClass( 0 )
| stk_near_ptr, stk_far_ptr:
StackSwap( 1 )
@scale_int
| *:
]
]
DoPlus
| *:
DoPlusScaled
]
;
scale_int:
StackMoveSP( 1 )
PushDup
DoBaseType
DoSizeType
StackMoveSP( -1 )
DoMul
;
perform_minus:
[SSLVersion( version_dip )
| false:
StackLRValue( 1 )
StackRValue( 0 )
[StackClass( 1 )
| stk_near_ptr, stk_far_ptr:
[StackClass( 0 )
| stk_near_ptr, stk_far_ptr:
% have to check if base type sizes are the same
PushDup
DoBaseType
DoSizeType
PushDup
StackSwap( 3 )
PushDup
DoBaseType
DoSizeType
StackMoveSP( 1 )
StackSwap( 3 )
StackMoveSP( -1 )
[DoTstEQ( 1 )
| false:
#err_ill_type
| *:
PopEntry
StackMoveSP( 1 )
DoMinus
StackMoveSP( -1 )
DoDiv
]
| *:
@scale_int
DoMinus
]
| *:
[StackClass( 0 )
| stk_near_ptr, stk_far_ptr:
#err_ill_type
| *:
DoMinus
]
]
| *:
DoMinusScaled
]
;
do_points_unsigned:
[SSLVersion( version_dip )
| false:
[SwitchChk(sw_32_bit)
| false:
DoPoints(stk_unsigned)
| *:
DoPoints(stk_unsigned_long)
]
| *:
DoPoints2( TI_integer_unsigned_0 )
]
;
do_points_addr:
[SSLVersion( version_dip )
| false:
[SwitchChk(sw_32_bit)
| false:
DoPoints(stk_addr)
| *:
DoPoints(stk_addr_long)
]
| *:
DoPoints2( TI_address_0 )
]
;
do_point_type_default:
[SSLVersion( version_dip )
| false:
[SwitchChk(sw_32_bit)
| false:
DoPointType( class_far )
| *:
DoPointType( class_near )
]
| *:
DoPointType2( TM_NONE )
]
;
do_point_type_near:
[SSLVersion( version_dip )
| false:
DoPointType( class_near )
| *:
DoPointType2( TM_NEAR )
]
;
do_point_type_far:
[SSLVersion( version_dip )
| false:
DoPointType( class_far )
| *:
DoPointType2( TM_FAR )
]
;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?