276,9 → 276,19 |
bt [format_flags],0 |
jc illegal_instruction |
public_allowed: |
mov [base_code],0C0h |
lods byte [esi] |
cmp al,2 |
je public_label |
cmp al,1Dh |
jne invalid_argument |
lods byte [esi] |
and al,7 |
add [base_code],al |
lods byte [esi] |
cmp al,2 |
jne invalid_argument |
public_label: |
lods dword [esi] |
cmp eax,0Fh |
jb invalid_use_of_symbol |
304,7 → 314,8 |
mov [ebx+4],esi |
lods dword [esi] |
lea esi,[esi+eax+1] |
mov byte [ebx],80h |
mov al,[base_code] |
mov [ebx],al |
jmp instruction_assembled |
extrn_directive: |
mov al,[output_format] |
326,7 → 337,7 |
cmp eax,[structures_buffer] |
jae out_of_memory |
mov [free_additional_memory],eax |
mov byte [edx],81h |
mov byte [edx],80h |
mov [edx+4],ebx |
lods byte [esi] |
cmp al,86h |
2408,9 → 2419,10 |
mov dl,[esi] |
or dl,dl |
jz enumerate_section |
cmp dl,0C0h |
jae enumerate_public |
cmp dl,80h |
je enumerate_public |
ja enumerate_extrn |
jae enumerate_extrn |
add esi,0Ch |
jmp enumerate_symbols |
enumerate_section: |
2425,7 → 2437,7 |
enumerate_public: |
mov edx,eax |
shl edx,8 |
mov dl,80h |
mov dl,[esi] |
mov [esi],edx |
mov edx,[esi+8] |
add esi,10h |
2433,14 → 2445,16 |
cmp byte [edx+11],2 |
jne enumerate_symbols |
mov edx,[edx+20] |
cmp byte [edx],81h |
jne enumerate_symbols |
cmp byte [edx],0C0h |
jae enumerate_symbols |
cmp byte [edx],80h |
jb enumerate_symbols |
inc eax |
jmp enumerate_symbols |
enumerate_extrn: |
mov edx,eax |
shl edx,8 |
mov dl,81h |
mov dl,[esi] |
mov [esi],edx |
add esi,0Ch |
inc eax |
2461,9 → 2475,10 |
mov al,[ebx] |
or al,al |
jz skip_other_section |
cmp al,0C0h |
jae check_public_reference |
cmp al,80h |
je check_public_reference |
ja next_reference |
jae next_reference |
cmp edx,[ebx+8] |
je default_section_ok |
next_reference: |
2500,8 → 2515,8 |
or al,al |
jz section_found |
add esi,0Ch |
cmp al,80h |
jne find_section |
cmp al,0C0h |
jb find_section |
add esi,4 |
jmp find_section |
section_found: |
2545,7 → 2560,8 |
jz section_relocations_done |
cmp al,80h |
jb add_relocation |
ja next_relocation |
cmp al,0C0h |
jb next_relocation |
add esi,10h |
jmp find_relocations |
add_relocation: |
2622,9 → 2638,10 |
cmp esi,[free_additional_memory] |
je symbols_table_ok |
mov al,[esi] |
cmp al,0C0h |
jae add_public_symbol |
cmp al,80h |
je add_public_symbol |
ja add_extrn_symbol |
jae add_extrn_symbol |
or al,al |
jz add_section_symbol |
add esi,0Ch |
2666,7 → 2683,7 |
jne invalid_use_of_symbol |
public_symbol_type_ok: |
mov ecx,[eax+20] |
cmp byte [ecx],81h |
cmp byte [ecx],80h |
je alias_symbol |
cmp byte [ecx],0 |
jne invalid_use_of_symbol |
2682,7 → 2699,15 |
store_public_symbol: |
mov eax,[eax] |
mov [ebx+8],eax |
mov byte [ebx+10h],2 |
mov al,2 |
cmp byte [esi],0C0h |
je store_symbol_class |
inc al |
cmp byte [esi],0C1h |
je store_symbol_class |
mov al,105 |
store_symbol_class: |
mov byte [ebx+10h],al |
add esi,10h |
add ebx,12h |
jmp make_symbols_table |
2971,8 → 2996,8 |
mov al,[esi] |
or al,al |
jz first_section_found |
cmp al,80h |
jne skip_other_symbol |
cmp al,0C0h |
jb skip_other_symbol |
add esi,4 |
skip_other_symbol: |
add esi,0Ch |
2989,9 → 3014,10 |
mov al,[esi] |
or al,al |
jz make_section_symbol |
cmp al,0C0h |
jae skip_public |
cmp al,80h |
je skip_public |
ja skip_extrn |
jae skip_extrn |
or byte [ebx+14h],40h |
skip_extrn: |
add esi,0Ch |
3050,9 → 3076,10 |
mov al,[esi] |
or al,al |
jz skip_section |
cmp al,0C0h |
jae make_public_symbol |
cmp al,80h |
je make_public_symbol |
ja make_extrn_symbol |
jae make_extrn_symbol |
add esi,0Ch |
jmp find_other_symbols |
skip_section: |
3061,6 → 3088,8 |
make_public_symbol: |
mov eax,[esi+0Ch] |
mov [current_line],eax |
cmp byte [esi],0C0h |
jne invalid_argument |
mov ebx,[esi+8] |
test byte [ebx+8],1 |
jz undefined_symbol |
3133,7 → 3162,7 |
inc ecx |
mov eax,ecx |
shl eax,8 |
mov al,80h |
mov al,0C0h |
mov [esi],eax |
add esi,10h |
jmp find_other_symbols |
3173,7 → 3202,7 |
inc ecx |
mov eax,ecx |
shl eax,8 |
mov al,81h |
mov al,80h |
mov [esi],eax |
add esi,0Ch |
jmp find_other_symbols |
3312,7 → 3341,8 |
jz relocations_converted |
cmp al,80h |
jb make_relocation_entry |
ja relocation_entry_ok |
cmp al,0C0h |
jb relocation_entry_ok |
add esi,10h |
jmp convert_relocations |
make_relocation_entry: |