Rev 692 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 692 | Rev 992 | ||
---|---|---|---|
Line 891... | Line 891... | ||
891 | mov [edi+12],al |
891 | mov [edi+12],al |
892 | expression_value_ok: |
892 | expression_value_ok: |
893 | ret |
893 | ret |
894 | get_byte_number: |
894 | get_byte_number: |
895 | mov word [edi+8],0 |
895 | xor eax,eax |
896 | mov byte [edi+12],0 |
- | |
897 | xor eax,eax |
- | |
898 | lods byte [esi] |
896 | lods byte [esi] |
899 | stos dword [edi] |
897 | stos dword [edi] |
900 | xor al,al |
898 | xor al,al |
901 | stos dword [edi] |
899 | stos dword [edi] |
902 | add edi,0Ch |
900 | got_number: |
- | 901 | mov word [edi-8+8],0 |
|
- | 902 | mov byte [edi-8+12],0 |
|
- | 903 | mov dword [edi-8+16],0 |
|
- | 904 | add edi,0Ch |
|
903 | jmp calculation_loop |
905 | jmp calculation_loop |
904 | get_word_number: |
906 | get_word_number: |
905 | mov word [edi+8],0 |
907 | xor eax,eax |
906 | mov byte [edi+12],0 |
- | |
907 | xor eax,eax |
- | |
908 | lods word [esi] |
908 | lods word [esi] |
909 | stos dword [edi] |
909 | stos dword [edi] |
910 | xor ax,ax |
910 | xor ax,ax |
911 | stos dword [edi] |
911 | stos dword [edi] |
912 | add edi,0Ch |
912 | jmp got_number |
913 | jmp calculation_loop |
- | |
914 | get_dword_number: |
913 | get_dword_number: |
915 | mov word [edi+8],0 |
914 | movs dword [edi],[esi] |
916 | mov byte [edi+12],0 |
- | |
917 | movs dword [edi],[esi] |
- | |
918 | xor eax,eax |
915 | xor eax,eax |
919 | stos dword [edi] |
916 | stos dword [edi] |
920 | add edi,0Ch |
917 | jmp got_number |
921 | jmp calculation_loop |
- | |
922 | get_qword_number: |
918 | get_qword_number: |
923 | mov word [edi+8],0 |
919 | movs dword [edi],[esi] |
924 | mov byte [edi+12],0 |
- | |
925 | movs dword [edi],[esi] |
- | |
926 | movs dword [edi],[esi] |
920 | movs dword [edi],[esi] |
927 | add edi,0Ch |
921 | jmp got_number |
928 | jmp calculation_loop |
- | |
929 | get_register: |
922 | get_register: |
930 | mov byte [edi+9],0 |
923 | mov byte [edi+9],0 |
931 | mov byte [edi+12],0 |
924 | mov byte [edi+12],0 |
932 | lods byte [esi] |
925 | lods byte [esi] |
933 | mov [edi+8],al |
926 | mov [edi+8],al |
934 | mov byte [edi+10],1 |
927 | mov byte [edi+10],1 |
935 | xor eax,eax |
928 | xor eax,eax |
936 | stos dword [edi] |
929 | mov [edi+16],eax |
- | 930 | stos dword [edi] |
|
937 | stos dword [edi] |
931 | stos dword [edi] |
938 | add edi,0Ch |
932 | add edi,0Ch |
939 | jmp calculation_loop |
933 | jmp calculation_loop |
940 | get_label: |
934 | get_label: |
941 | xor eax,eax |
935 | xor eax,eax |
Line 1523... | Line 1517... | ||
1523 | cmp word [edi+8],0 |
1517 | cmp word [edi+8],0 |
1524 | jne invalid_expression |
1518 | jne invalid_expression |
1525 | cmp [output_format],5 |
1519 | cmp [output_format],5 |
1526 | je calculate_gotoff |
1520 | je calculate_gotoff |
1527 | cmp [output_format],3 |
1521 | cmp [output_format],4 |
- | 1522 | je calculate_coff_rva |
|
- | 1523 | cmp [output_format],3 |
|
1528 | jne invalid_expression |
1524 | jne invalid_expression |
1529 | test [format_flags],8 |
1525 | test [format_flags],8 |
1530 | jnz pe64_rva |
1526 | jnz pe64_rva |
1531 | mov al,2 |
1527 | mov al,2 |
1532 | bt [resolver_flags],0 |
1528 | bt [resolver_flags],0 |
Line 1573... | Line 1569... | ||
1573 | jmp calculation_loop |
1569 | jmp calculation_loop |
1574 | calculate_gotoff: |
1570 | calculate_gotoff: |
1575 | test [format_flags],8+1 |
1571 | test [format_flags],8+1 |
1576 | jnz invalid_expression |
1572 | jnz invalid_expression |
1577 | mov dl,5 |
1573 | calculate_coff_rva: |
- | 1574 | mov dl,5 |
|
1578 | cmp byte [edi+12],2 |
1575 | cmp byte [edi+12],2 |
1579 | je change_value_type |
1576 | je change_value_type |
1580 | incorrect_change_of_value_type: |
1577 | incorrect_change_of_value_type: |
1581 | cmp [error_line],0 |
1578 | cmp [error_line],0 |
1582 | jne change_value_type |
1579 | jne change_value_type |
Line 1605... | Line 1602... | ||
1605 | jnz incorrect_change_of_value_type |
1602 | jnz incorrect_change_of_value_type |
1606 | cmp byte [edi+12],dh |
1603 | cmp byte [edi+12],dh |
1607 | jne incorrect_change_of_value_type |
1604 | jne incorrect_change_of_value_type |
1608 | mov eax,[edi+16] |
1605 | mov eax,[edi+16] |
1609 | cmp byte [eax],81h |
1606 | cmp byte [eax],80h |
1610 | jne incorrect_change_of_value_type |
1607 | jne incorrect_change_of_value_type |
1611 | jmp change_value_type |
1608 | jmp change_value_type |
1612 | div_64: |
1609 | div_64: |
1613 | xor ebx,ebx |
1610 | xor ebx,ebx |
1614 | cmp dword [edi],0 |
1611 | cmp dword [edi],0 |
1615 | jne divider_ok |
1612 | jne divider_ok |
Line 2007... | Line 2004... | ||
2007 | mov [address_symbol],eax |
2004 | mov [address_symbol],eax |
2008 | mov al,[edi+12] |
2005 | mov al,[edi+12] |
2009 | mov [value_type],al |
2006 | mov [value_type],al |
2010 | cmp al,6 |
2007 | cmp al,6 |
2011 | je plt_address |
2008 | je special_address_type_32bit |
2012 | cmp al,5 |
2009 | cmp al,5 |
2013 | je gotoff_address |
2010 | je special_address_type_32bit |
2014 | ja invalid_use_of_symbol |
2011 | ja invalid_use_of_symbol |
2015 | test al,1 |
2012 | test al,1 |
2016 | jnz invalid_use_of_symbol |
2013 | jnz invalid_use_of_symbol |
2017 | or al,al |
2014 | or al,al |
2018 | jz address_size_ok |
2015 | jz address_size_ok |
2019 | shl al,5 |
2016 | shl al,5 |
2020 | jmp address_symbol_ok |
2017 | jmp address_symbol_ok |
2021 | gotoff_address: |
2018 | special_address_type_32bit: |
2022 | plt_address: |
- | |
2023 | mov al,40h |
2019 | mov al,40h |
2024 | address_symbol_ok: |
2020 | address_symbol_ok: |
2025 | mov ah,[address_size] |
2021 | mov ah,[address_size] |
2026 | or [address_size],al |
2022 | or [address_size],al |
2027 | shr al,4 |
2023 | shr al,4 |
2028 | or ah,ah |
2024 | or ah,ah |
Line 2030... | Line 2026... | ||
2030 | cmp al,ah |
2026 | cmp al,ah |
2031 | je address_size_ok |
2027 | je address_size_ok |
2032 | cmp ax,0804h |
2028 | cmp ax,0804h |
2033 | jne address_sizes_do_not_agree |
2029 | jne address_sizes_do_not_agree |
2034 | mov [value_type],2 |
2030 | cmp [value_type],2 |
- | 2031 | ja value_type_correction_ok |
|
- | 2032 | mov [value_type],2 |
|
2035 | mov eax,[edi] |
2033 | value_type_correction_ok: |
- | 2034 | mov eax,[edi] |
|
2036 | cdq |
2035 | cdq |
2037 | cmp edx,[edi+4] |
2036 | cmp edx,[edi+4] |
2038 | je address_size_ok |
2037 | je address_size_ok |
2039 | cmp [error_line],0 |
2038 | cmp [error_line],0 |
2040 | jne address_size_ok |
2039 | jne address_size_ok |
Line 2178... | Line 2177... | ||
2178 | or bl,bl |
2177 | or bl,bl |
2179 | je relative_offset_ok |
2178 | je relative_offset_ok |
2180 | test bl,1 |
2179 | test bl,1 |
2181 | jnz invalid_use_of_symbol |
2180 | jnz invalid_use_of_symbol |
2182 | cmp bl,6 |
2181 | mov ecx,[address_symbol] |
- | 2182 | mov [symbol_identifier],ecx |
|
- | 2183 | cmp bl,6 |
|
2183 | je plt_relative_offset |
2184 | je plt_relative_offset |
2184 | cmp bl,[labels_type] |
2185 | cmp bl,[labels_type] |
2185 | jne invalid_use_of_symbol |
2186 | jne invalid_use_of_symbol |
2186 | mov [value_type],0 |
2187 | mov [value_type],0 |
2187 | mov ecx,[address_symbol] |
2188 | cmp ecx,[org_symbol] |
2188 | mov [symbol_identifier],ecx |
- | |
2189 | cmp ecx,[org_symbol] |
- | |
2190 | je relative_offset_ok |
2189 | je relative_offset_ok |
2191 | mov [value_type],3 |
2190 | mov [value_type],3 |
2192 | relative_offset_ok: |
2191 | relative_offset_ok: |
2193 | ret |
2192 | ret |
2194 | plt_relative_offset: |
2193 | plt_relative_offset: |