forked from qwordAtGitHub/SmplMath
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathFlowControl.inc
More file actions
139 lines (123 loc) · 4.86 KB
/
FlowControl.inc
File metadata and controls
139 lines (123 loc) · 4.86 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
;/************************************************************
; * This file is a test of the SmplMath macros-system. *
; * *
; * Copyright by HSE, 2020-2024 *
; * *
; * https://github.com/ASMHSE/SmplMath/ *
; * *
; * Further Copyright and Legal statements are located *
; * in the documentation (Documentation.pdf). *
; * *
; ************************************************************/
; Mabdelouahab's Macros 2017 [http://masm32.com/board/index.php?topic=5956.msg63211#msg63211]
; HSE extension floating point comparisons 2020
; HSE extension unsigned comparisons 2021
; HSE extension floating point checks 2021
; HSE obliteration instead of remotion of ab and space 2021
; HSE @while-@break-@endw macros 2022
; ************************************************
run_time_comparisons MACRO
% echo **************************************
% echo variable run time comparison operators
% echo **************************************
% echo -------------
% echo equality test
% echo -------------
% echo eq equal
% echo ne not equal
% echo
% echo -----------------
% echo signed comparison
% echo -----------------
% echo gt signed greater than
% echo lt signed less than
% echo ge signed greater than or equal
% echo le signed less than or equal
% echo
% echo -------------------
% echo unsigned comparison
% echo -------------------
% echo ua unsigned above
% echo ub unsigned below
% echo ae unsigned above or equal
% echo be unsigned below or equal
% echo
% echo -------------------------
% echo floating point comparison
% echo -------------------------
% echo fEQ equal
% echo fNE not equal
% echo
% echo fGT greater than
% echo fLT less than
% echo fGE greater than or equal
% echo fLE less than or equal
% echo
% echo --------------------
% echo floating point check
% echo --------------------
% echo r4Is check real4 is NotNaN/Valid
% echo r8Is check real8 is NotNaN/Valid
% echo
% echo -------------------------
% echo doubledouble floating point comparison
% echo -------------------------
% echo rrGT greater than
% echo rrLT less than
% echo rrGE greater than or equal
% echo rrLE signed less than or equal
% echo **************************************
ENDM
; ************************************************
TypeOf MACRO arg
EXITM % opattr(arg)
ENDM
TrimString macro string___
LOCAL ?Ltmp_string___,Ltmp_string___,Ltmp_Char,L_TabPos,L_SpcPos
LOCAL L_ComparOperation,firstpart,secondpart ; Remove ptr obliteration
?Ltmp_string___ TEXTEQU <string___>
Ltmp_string___ TEXTEQU <>
% FORC Ltmp_Char,<?Ltmp_string___>
L_TabPos INSTR 1,< >,<Ltmp_Char>
L_SpcPos INSTR 1,< >,<Ltmp_Char>
IFE L_TabPos
IFE L_SpcPos
Ltmp_string___ TEXTEQU Ltmp_string___,<&Ltmp_Char>
ELSE
Ltmp_string___ TEXTEQU Ltmp_string___,<___>
ENDIF
ELSE
Ltmp_string___ TEXTEQU Ltmp_string___,<___>
ENDIF
ENDM
; Remove ptr obliteration
repeat 2
L_ComparOperation INSTR 1,Ltmp_string___, <___ptr___>
IF L_ComparOperation
firstpart SUBSTR Ltmp_string___,1, L_ComparOperation-1
secondpart SUBSTR Ltmp_string___,L_ComparOperation+9
Ltmp_string___ TEXTEQU firstpart, < ptr >,secondpart
ENDIF
endm
repeat 2
L_ComparOperation INSTR 1,Ltmp_string___, <___ptr>
IF L_ComparOperation
firstpart SUBSTR Ltmp_string___,1, L_ComparOperation-1
secondpart SUBSTR Ltmp_string___,L_ComparOperation+6
Ltmp_string___ TEXTEQU firstpart, < ptr >,secondpart
ENDIF
endm
EXITM <Ltmp_string___>
endm
ObliterateOperation macro nameop:req
EXITM @CatStr(<___>,<nameop>,<___>)
endm
LiberateOperation macro nameop:req
LOCAL nameln
namelm SIZESTR <&nameop>
EXITM <@Substr(&nameop,3, nameln-6)>
endm
Obliterateln equ 6
include ifendif.inc
include while.inc
include dothis.inc