Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

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