Subversion Repositories Kolibri OS

Rev

Rev 4039 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. ; flat assembler core
  3. ; Copyright (c) 1999-2016, Tomasz Grysztar.
  4. ; All rights reserved.
  5.  
  6. out_of_memory:
  7.         push    _out_of_memory
  8.         jmp     fatal_error
  9. stack_overflow:
  10.         push    _stack_overflow
  11.         jmp     fatal_error
  12. main_file_not_found:
  13.         push    _main_file_not_found
  14.         jmp     fatal_error
  15. write_failed:
  16.         push    _write_failed
  17.         jmp     fatal_error
  18.  
  19. unexpected_end_of_file:
  20.         push    _unexpected_end_of_file
  21.         jmp     general_error
  22. code_cannot_be_generated:
  23.         push    _code_cannot_be_generated
  24.         jmp     general_error
  25. format_limitations_exceeded:
  26.         push    _format_limitations_exceeded
  27.         jmp     general_error
  28. invalid_definition:
  29.         push    _invalid_definition
  30.     general_error:
  31.         cmp     [symbols_file],0
  32.         je      fatal_error
  33.         call    dump_preprocessed_source
  34.         jmp     fatal_error
  35.  
  36. file_not_found:
  37.         push    _file_not_found
  38.         jmp     error_with_source
  39. error_reading_file:
  40.         push    _error_reading_file
  41.         jmp     error_with_source
  42. invalid_file_format:
  43.         push    _invalid_file_format
  44.         jmp     error_with_source
  45. invalid_macro_arguments:
  46.         push    _invalid_macro_arguments
  47.         jmp     error_with_source
  48. incomplete_macro:
  49.         push    _incomplete_macro
  50.         jmp     error_with_source
  51. unexpected_characters:
  52.         push    _unexpected_characters
  53.         jmp     error_with_source
  54. invalid_argument:
  55.         push    _invalid_argument
  56.         jmp     error_with_source
  57. illegal_instruction:
  58.         push    _illegal_instruction
  59.         jmp     error_with_source
  60. invalid_operand:
  61.         push    _invalid_operand
  62.         jmp     error_with_source
  63. invalid_operand_size:
  64.         push    _invalid_operand_size
  65.         jmp     error_with_source
  66. operand_size_not_specified:
  67.         push    _operand_size_not_specified
  68.         jmp     error_with_source
  69. operand_sizes_do_not_match:
  70.         push    _operand_sizes_do_not_match
  71.         jmp     error_with_source
  72. invalid_address_size:
  73.         push    _invalid_address_size
  74.         jmp     error_with_source
  75. address_sizes_do_not_agree:
  76.         push    _address_sizes_do_not_agree
  77.         jmp     error_with_source
  78. disallowed_combination_of_registers:
  79.         push    _disallowed_combination_of_registers
  80.         jmp     error_with_source
  81. long_immediate_not_encodable:
  82.         push    _long_immediate_not_encodable
  83.         jmp     error_with_source
  84. relative_jump_out_of_range:
  85.         push    _relative_jump_out_of_range
  86.         jmp     error_with_source
  87. invalid_expression:
  88.         push    _invalid_expression
  89.         jmp     error_with_source
  90. invalid_address:
  91.         push    _invalid_address
  92.         jmp     error_with_source
  93. invalid_value:
  94.         push    _invalid_value
  95.         jmp     error_with_source
  96. value_out_of_range:
  97.         push    _value_out_of_range
  98.         jmp     error_with_source
  99. undefined_symbol:
  100.         mov     edi,message
  101.         mov     esi,_undefined_symbol
  102.         call    copy_asciiz
  103.         push    message
  104.         cmp     [error_info],0
  105.         je      error_with_source
  106.         mov     esi,[error_info]
  107.         mov     esi,[esi+24]
  108.         or      esi,esi
  109.         jz      error_with_source
  110.         mov     byte [edi-1],20h
  111.         call    write_quoted_symbol_name
  112.         jmp     error_with_source
  113.     copy_asciiz:
  114.         lods    byte [esi]
  115.         stos    byte [edi]
  116.         test    al,al
  117.         jnz     copy_asciiz
  118.         ret
  119.     write_quoted_symbol_name:
  120.         mov     al,27h
  121.         stosb
  122.         movzx   ecx,byte [esi-1]
  123.         rep     movs byte [edi],[esi]
  124.         mov     ax,27h
  125.         stosw
  126.         ret
  127. symbol_out_of_scope:
  128.         mov     edi,message
  129.         mov     esi,_symbol_out_of_scope_1
  130.         call    copy_asciiz
  131.         cmp     [error_info],0
  132.         je      finish_symbol_out_of_scope_message
  133.         mov     esi,[error_info]
  134.         mov     esi,[esi+24]
  135.         or      esi,esi
  136.         jz      finish_symbol_out_of_scope_message
  137.         mov     byte [edi-1],20h
  138.         call    write_quoted_symbol_name
  139.     finish_symbol_out_of_scope_message:
  140.         mov     byte [edi-1],20h
  141.         mov     esi,_symbol_out_of_scope_2
  142.         call    copy_asciiz
  143.         push    message
  144.         jmp     error_with_source
  145. invalid_use_of_symbol:
  146.         push    _invalid_use_of_symbol
  147.         jmp     error_with_source
  148. name_too_long:
  149.         push    _name_too_long
  150.         jmp     error_with_source
  151. invalid_name:
  152.         push    _invalid_name
  153.         jmp     error_with_source
  154. reserved_word_used_as_symbol:
  155.         push    _reserved_word_used_as_symbol
  156.         jmp     error_with_source
  157. symbol_already_defined:
  158.         push    _symbol_already_defined
  159.         jmp     error_with_source
  160. missing_end_quote:
  161.         push    _missing_end_quote
  162.         jmp     error_with_source
  163. missing_end_directive:
  164.         push    _missing_end_directive
  165.         jmp     error_with_source
  166. unexpected_instruction:
  167.         push    _unexpected_instruction
  168.         jmp     error_with_source
  169. extra_characters_on_line:
  170.         push    _extra_characters_on_line
  171.         jmp     error_with_source
  172. section_not_aligned_enough:
  173.         push    _section_not_aligned_enough
  174.         jmp     error_with_source
  175. setting_already_specified:
  176.         push    _setting_already_specified
  177.         jmp     error_with_source
  178. data_already_defined:
  179.         push    _data_already_defined
  180.         jmp     error_with_source
  181. too_many_repeats:
  182.         push    _too_many_repeats
  183.         jmp     error_with_source
  184. assertion_failed:
  185.         push    _assertion_failed
  186.         jmp     error_with_source
  187. invoked_error:
  188.         push    _invoked_error
  189.     error_with_source:
  190.         cmp     [symbols_file],0
  191.         je      assembler_error
  192.         call    dump_preprocessed_source
  193.         call    restore_preprocessed_source
  194.         jmp     assembler_error
  195.