dbgintr.ssl

来自「开放源码的编译器open watcom 1.6.0版的源代码」· SSL 代码 · 共 357 行

SSL
357
字号
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%	Copyright (C) 1987, by WATCOM Systems Inc. All rights	  %
%	reserved. No part of this software may be reproduced	  %
%	in any form or by any means - graphic, electronic or	  %
%	mechanical, including photocopying, recording, taping	  %
%	or information storage and retrieval systems - except	  %
%	with the written permission of WATCOM Systems Inc.	  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Modified  By			Reason
% --------  --			------
% 89/12/15  B.J. Stecher	split out from C.SSL / FORTRAN.SSL
%

% high byte => major version, low byte => minor version
type version_info:	
    'version_dip'	= 0x100
    'version_curr'	= 0x100;

type int:
    '-2'	= -2
    '-1'	= -1
     '0'	=  0
     '1'	=  1
     '2'	=  2
     '3'	=  3;

type bool:
    false
    true;
    
type type_info:
    TK_NONE	= 0x0000
    TK_DATA	= 0x1000
    TK_CODE	= 0x2000
    TK_ADDRESS	= 0x3000
    TK_VOID	= 0x4000
    TK_BOOL	= 0x5000
    TK_ENUM	= 0x6000
    TK_CHAR	= 0x7000
    TK_INTEGER	= 0x8000
    TK_REAL	= 0x9000
    TK_COMPLEX	= 0xa000
    TK_STRING	= 0xb000
    TK_POINTER	= 0xc000
    TK_STRUCT	= 0xd000
    TK_ARRAY	= 0xe000
    TK_FUNCTION	= 0xf000
    
    TM_NONE	= 0x0000

    % for pointer/address types 
    
    TM_NEAR	= 0x0100
    TM_FAR	= 0x0200
    TM_HUGE	= 0x0300

    % for integer types 
    
    TM_SIGNED	= 0x0100
    TM_UNSIGNED	= 0x0200

    % for floating point types
    
    TM_IEEE	= 0x0100
    TM_VAX1	= 0x0200
    TM_VAX2	= 0x0300

    % for string types
    
    TM_ASCII	= 0x0100
    TM_EBCIDIC	= 0x0200
    TM_UNICODE	= 0x0300
    
    % size is stored in low byte
    
    
    TI_bool_unsigned_1		= 0x5201
    
    TI_char_unsigned_2		= 0x7202
    
    TI_integer_unsigned_0	= 0x8200
    TI_integer_unsigned_1	= 0x8201
    TI_integer_unsigned_2	= 0x8202
    TI_integer_unsigned_4	= 0x8204
    TI_integer_unsigned_8	= 0x8208
   
    TI_integer_signed_0		= 0x8100
    TI_integer_signed_1		= 0x8101
    TI_integer_signed_2		= 0x8102
    TI_integer_signed_4		= 0x8104
    TI_integer_signed_8		= 0x8108
   
    TI_real_4			= 0x9004
    TI_real_8			= 0x9008
    
    TI_complex_8		= 0xa008
    TI_complex_16		= 0xa010
   
    TI_address_0		= 0x3000
    
    TI_void			= 0x4000
    ;

type symbol_type:
    ST_NONE			= 0
    ST_OPERATOR			= 1
    ST_DESTRUCTOR		= 2
    ST_TYPE			= 3
    ST_STRUCT_TAG		= 4
    ST_CLASS_TAG		= 5
    ST_UNION_TAG		= 6
    ST_ENUM_TAG			= 7
    ST_NAMESPACE		= 8
    ;
    
type symbol_kind:
    SK_NONE			= 0
    SK_CODE			= 1
    SK_DATA			= 2
    SK_CONST			= 3
    SK_TYPE			= 4
    SK_PROCEDURE		= 5
    SK_NAMESPACE		= 6
    ;
    
type stack_form:
    SF_NAME			= 0
    SF_SYMBOL			= 1
    SF_LVALUE			= 2
    SF_RVALUE			= 3
    ;

type type_classes:	%OBSOLETE
    class_near
    class_far;

type stack_class:	%OBSOLETE
    stk_void
    stk_bool
    stk_enum
    stk_char
    stk_int
    stk_near_ptr
    stk_far_ptr
    stk_addr
    stk_real
    stk_struct
    stk_array
    stk_func
    stk_type
    stk_name
    stk_reg_set
    stk_complex
    stk_string
    stk_unsigned	= 0x104
    stk_unsigned_long	= 0x304
    stk_far_ptr_long	= 0x206
    stk_addr_long	= 0x207;

type type_scalar:	%OBSOLETE
    type_void
    type_u1
    type_s1
    type_u2
    type_s2
    type_u4
    type_s4
    type_f4
    type_f8
    type_z8
    type_z16;

type dbg_switch:
    sw_case_sensitive	    = 0x01
    sw_side_effect	    = 0x02
    sw_32_bit		    = 0x04;	%OBSOLETE

mechanism Misc:
    ExprDepthAdj(int) >>int	= 0x00
    ExprIsCall >>bool
    SkipCountAdd(int)
    SkipCount >>int
    __spare_entry__
    ScanSave
    ScanRestore
    ScanPop
    ScanString(bool)	% arg:	 true -- start string scan mode
			%	false -- end string scan mode
    MoveScanPtr(int)
    AddChar
    AddCEscapeChar
    AddCCharZero
    ScanCCharNum(bool)
    NextNestedCall
    UseSubstringIndex1
    UseSubstringIndex2
    SetEvalSubstring(bool)
    EvalSubstring >>bool
    PurgePgmStack
    SwitchOn( dbg_switch )
    SwitchOff( dbg_switch )
    SwitchChk( dbg_switch ) >>bool

	    % false => row major order (C)
	    % true  => column major order (fortran)
    MarkArrayOrder( bool )
    StartSubscript
    AddSubscriptIndex
    EndSubscript;



mechanism Do:
    DoAssign		= 0x20
    DoMul
    DoDiv
    DoMod
    DoMinus
    DoShift
    DoAnd
    DoXor
    DoOr
    DoAddr
    DoPoints(stack_class)	%OBSOLETE
    DoField
    DoCall( bool )	      % always takes var num
    DoConvert
    DoPlus
    DoMakeAddr
    DoTstEQ(int) >>bool
    DoTstLT(int) >>bool
    DoTstTrue(int) >>bool
    DoTstExist(int) >>bool
    DoSizeType
    DoBaseType
    DoPointType(type_classes)	%OBSOLETE
    DoLkupType >>bool
    DoMakeComplex
    DoStringConcat
    DoLConvert
    %
    % Following added in version 0x100
    %
    DoPlusScaled	
    DoMinusScaled
    DoPoints2(type_info)
    DoPointType2(type_info)
    DoScope(bool);


mechanism Push_n_Pop:
    PushInt(int)	= 0x40
    PushDot
    PushRegSet >>bool
    PushNum >>bool
    PushScalarType(type_scalar)	%OBSOLETE
    PushDup
    PopEntry
    PushString
    %
    % Following added in version 0x100
    %
    SSLVersion(version_info) >>bool %Here since old wd's will return FALSE
    PushType(type_info);


mechanism Stack:
    StackSwap(int)	= 0x60
    StackMoveSP(int)
    StackClass(int) >>stack_class
    StackValue(int)
    StackLValue(int)
    StackRValue(int)
    StackLRValue(int)
    %
    % Following added in version 0x100
    %
    StackKind(int) >>type_info
    StackSymKind(int) >>symbol_kind
    StackSymValue(int) >>bool
    StackForm(int) >>stack_form;


% Variables


mechanism Num:
    NumSet(int) 	= 0x80
    NumAdd(int)
    NumPush
    NumPop;


type bits_type:
    bits_none		= 0x00
    bits_char		= 0x01
    bits_int		= 0x02
    bits_short		= 0x04
    bits_long		= 0x08
    bits_signed 	= 0x10
    bits_unsigned	= 0x20
    bits_float		= 0x40
    bits_double 	= 0x80
    bits_void		= 0x100
    bits_byte		= 0x200
    bits_boolean	= 0x400
    bits_signed_char	= 0x11
    bits_unsigned_char	= 0x21
    bits_signed_int	= 0x12
    bits_unsigned_int	= 0x22
    bits_signed_short	= 0x14
    bits_unsigned_short = 0x24
    bits_short_int	= 0x06
    bits_signed_short_int=0x16
    bits_unsigned_short_int=0x26
    bits_signed_long	= 0x18
    bits_unsigned_long	= 0x28
    bits_long_int	= 0x0a
    bits_signed_long_int= 0x1a
    bits_unsigned_long_int=0x2a
    bits_long_float	= 0x48
    bits_long_double	= 0x88;

mechanism Bits:
    BitsSet(bits_type)	= 0xa0
    BitsGet >>bits_type
    BitsOr(bits_type) >>bool
    BitsAnd(bits_type) >>bool;

mechanism Get:
    GetInit		= 0xc0
    GetFini
    GetModCurr
    GetModNameLkup
    GetScopeSetFile		%OBSOLETE
    GetScopeSetCurr		%OBSOLETE
    GetScopeLkup		%OBSOLETE
    GetName >>bool
    GetOperatorName
    GetLineNum >>bool
    GetDtorName >>bool		
    GetSetNameType(symbol_type) 
    GetQueryName >>bool		%OBSOLETE
    GetAddScope			%OBSOLETE
    ;


error:
    err_duplicate_type_spec
    err_ill_type
    err_illegal_type_spec
    err_loc_and_want_reg_name
    err_loc_and_want_operand
    err_loc_and_want_name
    err_bad_version;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?