Rev 1062 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1062 | Rev 1189 | ||
---|---|---|---|
Line 74... | Line 74... | ||
74 | ret |
74 | ret |
75 | 75 | ||
Line 76... | Line 76... | ||
76 | convert_number: |
76 | convert_number: |
77 | lea eax,[edi-10h] |
77 | lea eax,[edi-10h] |
- | 78 | mov edx,[memory_end] |
|
- | 79 | cmp [source_start],0 |
|
- | 80 | je check_memory_for_number |
|
78 | cmp eax,[labels_list] |
81 | mov edx,[labels_list] |
- | 82 | check_memory_for_number: |
|
- | 83 | cmp eax,edx |
|
79 | jae out_of_memory |
84 | jae out_of_memory |
- | 85 | mov eax,esp |
|
- | 86 | sub eax,100h |
|
- | 87 | jc stack_overflow |
|
- | 88 | cmp eax,[stack_limit] |
|
- | 89 | jb stack_overflow |
|
80 | cmp byte [esi],'(' |
90 | cmp byte [esi],'(' |
81 | je expression_value |
91 | je expression_value |
82 | inc edi |
92 | inc edi |
83 | call get_number |
93 | call get_number |
84 | jc symbol_value |
94 | jc symbol_value |
Line 109... | Line 119... | ||
109 | mov byte [edi-1],2 |
119 | mov byte [edi-1],2 |
110 | scas word [edi] |
120 | scas word [edi] |
111 | ret |
121 | ret |
112 | expression_value: |
122 | expression_value: |
113 | mov eax,esp |
123 | inc esi |
114 | sub eax,100h |
- | |
115 | jc stack_overflow |
- | |
116 | cmp eax,[stack_limit] |
- | |
117 | jb stack_overflow |
- | |
118 | inc esi |
- | |
119 | push [current_offset] |
124 | push [current_offset] |
120 | call convert_expression |
125 | call convert_expression |
121 | pop [current_offset] |
126 | pop [current_offset] |
122 | lods byte [esi] |
127 | lods byte [esi] |
123 | cmp al,')' |
128 | cmp al,')' |
124 | jne invalid_expression |
129 | jne invalid_expression |
125 | ret |
130 | ret |
126 | symbol_value: |
131 | symbol_value: |
127 | push edi |
132 | cmp [source_start],0 |
- | 133 | je preprocessor_value |
|
- | 134 | push edi |
|
128 | mov edi,address_registers |
135 | mov edi,address_registers |
129 | call get_operator |
136 | call get_operator |
130 | or al,al |
137 | or al,al |
131 | jnz register_value |
138 | jnz register_value |
132 | mov edi,directive_operators |
139 | mov edi,directive_operators |
Line 151... | Line 158... | ||
151 | pop edi |
158 | pop edi |
152 | mov byte [edi-1],10h |
159 | mov byte [edi-1],10h |
153 | stos byte [edi] |
160 | stos byte [edi] |
154 | ret |
161 | ret |
155 | 162 | preprocessor_value: |
|
- | 163 | dec edi |
|
- | 164 | lods byte [esi] |
|
- | 165 | cmp al,1Ah |
|
- | 166 | jne invalid_value |
|
- | 167 | lods byte [esi] |
|
- | 168 | mov cl,al |
|
- | 169 | mov ch,10b |
|
- | 170 | call get_preprocessor_symbol |
|
- | 171 | jc invalid_value |
|
- | 172 | push esi |
|
- | 173 | mov esi,[edx+8] |
|
- | 174 | push [current_offset] |
|
- | 175 | call convert_expression |
|
- | 176 | pop [current_offset] |
|
- | 177 | pop esi |
|
- | 178 | ret |
|
- | 179 | ||
Line 156... | Line 180... | ||
156 | get_number: |
180 | get_number: |
157 | xor ebp,ebp |
181 | xor ebp,ebp |
158 | lods byte [esi] |
182 | lods byte [esi] |
159 | cmp al,22h |
183 | cmp al,22h |
Line 1041... | Line 1065... | ||
1041 | add edi,0Ch |
1065 | add edi,0Ch |
1042 | jmp calculation_loop |
1066 | jmp calculation_loop |
1043 | timestamp_label: |
1067 | timestamp_label: |
1044 | call make_timestamp |
1068 | call make_timestamp |
1045 | jmp make_dword_label_value |
1069 | make_qword_label_value: |
1046 | predefined_label: |
1070 | stos dword [edi] |
- | 1071 | mov eax,edx |
|
- | 1072 | stos dword [edi] |
|
- | 1073 | add edi,0Ch |
|
- | 1074 | jmp calculation_loop |
|
- | 1075 | predefined_label: |
|
1047 | or eax,eax |
1076 | or eax,eax |
1048 | jz current_offset_label |
1077 | jz current_offset_label |
1049 | cmp eax,1 |
1078 | cmp eax,1 |
1050 | je counter_label |
1079 | je counter_label |
1051 | cmp eax,2 |
1080 | cmp eax,2 |