Subversion Repositories Kolibri OS

Rev

Rev 174 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 174 Rev 176
Line 6006... Line 6006...
6006
	jnz	address_ok
6006
	jnz	address_ok
6007
	test	ch,0Fh
6007
	test	ch,0Fh
6008
	jnz	address_ok
6008
	jnz	address_ok
6009
      calculate_relative_address:
6009
      calculate_relative_address:
6010
	call	calculate_relative_offset
6010
	mov	edx,[address_high]
-
 
6011
	call	calculate_relative_offset
6011
	mov	[address_high],edx
6012
	mov	[address_high],edx
6012
	mov	edx,[symbol_identifier]
6013
	cdq
-
 
6014
	cmp	edx,[address_high]
-
 
6015
	jne	value_out_of_range
-
 
6016
	mov	edx,[symbol_identifier]
6013
	mov	[address_symbol],edx
6017
	mov	[address_symbol],edx
6014
	mov	edx,eax
6018
	mov	edx,eax
6015
	mov	bx,0FF00h
6019
	mov	bx,0FF00h
6016
      address_ok:
6020
      address_ok:
6017
	ret
6021
	ret
6018
 
6022
operand_16bit:
6019
operand_16bit:
-
 
6020
	cmp	[code_type],16
6023
	cmp	[code_type],16
6021
	je	size_prefix_ok
6024
	je	size_prefix_ok
6022
	mov	[operand_prefix],66h
6025
	mov	[operand_prefix],66h
6023
	ret
6026
	ret
6024
operand_32bit:
6027
operand_32bit:
Line 6144... Line 6147...
6144
      reg_code_ok:
6147
      reg_code_ok:
6145
	call	store_segment_prefix_if_necessary
6148
	call	store_segment_prefix_if_necessary
6146
	or	bx,bx
6149
	or	bx,bx
6147
	jz	address_immediate
6150
	jz	address_immediate
6148
	cmp	bx,0F000h
6151
	cmp	bx,0F800h
6149
	je	address_rip_based
6152
	je	address_rip_based
6150
	cmp	bx,0FF00h
6153
	cmp	bx,0F400h
-
 
6154
	je	address_eip_based
-
 
6155
	cmp	bx,0FF00h
6151
	je	address_relative
6156
	je	address_relative
6152
	mov	al,bl
6157
	mov	al,bl
6153
	or	al,bh
6158
	or	al,bh
6154
	and	al,11110000b
6159
	and	al,11110000b
6155
	cmp	al,80h
6160
	cmp	al,80h
Line 6483... Line 6488...
6483
	shl	cl,3
6488
	shl	cl,3
6484
	or	al,cl
6489
	or	al,cl
6485
	stos	word [edi]
6490
	stos	word [edi]
6486
	jmp	store_address_32bit_value
6491
	jmp	store_address_32bit_value
6487
      address_rip_based:
6492
      address_eip_based:
-
 
6493
	mov	al,67h
-
 
6494
	stos	byte [edi]
-
 
6495
      address_rip_based:
6488
	cmp	[code_type],64
6496
	cmp	[code_type],64
6489
	jne	invalid_address
6497
	jne	invalid_address
6490
	call	store_instruction_code
6498
	call	store_instruction_code
6491
	jmp	store_immediate_address
6499
	jmp	store_immediate_address
6492
      address_relative:
6500
      address_relative: