Subversion Repositories Kolibri OS

Rev

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

Rev 370 Rev 607
Line 5773... Line 5773...
5773
vmread_instruction:
5773
vmread_instruction:
5774
	mov	[extended_code],78h
5774
	mov	[extended_code],78h
5775
	lods	byte [esi]
5775
	lods	byte [esi]
5776
	call	get_size_operator
5776
	call	get_size_operator
5777
	cmp	al,'['
5777
	cmp	al,10h
-
 
5778
	je	vmread_nomem
-
 
5779
	cmp	al,'['
5778
	jne	invalid_operand
5780
	jne	invalid_operand
5779
	call	get_address
5781
	call	get_address
5780
	lods	byte [esi]
5782
	lods	byte [esi]
5781
	cmp	al,','
5783
	cmp	al,','
5782
	jne	invalid_operand
5784
	jne	invalid_operand
5783
	lods	byte [esi]
5785
	call	vmread_check_size
-
 
5786
	mov	[operand_size],0
-
 
5787
	lods	byte [esi]
-
 
5788
	call	get_size_operator
-
 
5789
	cmp	al,10h
-
 
5790
	jne	invalid_operand
-
 
5791
	lods	byte [esi]
-
 
5792
	call	convert_register
-
 
5793
	mov	[postbyte_register],al
-
 
5794
	cmp	[operand_size],4
-
 
5795
	jne	invalid_operand_size
-
 
5796
	jmp	vmx_size_ok
-
 
5797
      vmread_nomem:
-
 
5798
	lods	byte [esi]
-
 
5799
	call	convert_register
-
 
5800
	push	eax
-
 
5801
	call	vmread_check_size
-
 
5802
	lods	byte [esi]
-
 
5803
	cmp	al,','
-
 
5804
	jne	invalid_operand
-
 
5805
	mov	[operand_size],0
-
 
5806
	lods	byte [esi]
5784
	call	get_size_operator
5807
	call	get_size_operator
5785
	cmp	al,10h
5808
	cmp	al,10h
5786
	jne	invalid_operand
5809
	jne	invalid_operand
5787
	lods	byte [esi]
5810
	lods	byte [esi]
5788
	call	convert_register
5811
	call	convert_register
5789
	mov	[postbyte_register],al
5812
	mov	[postbyte_register],al
5790
      vmread_check_size:
5813
	cmp	[operand_size],4
-
 
5814
	jne	invalid_operand_size
-
 
5815
	pop	ebx
-
 
5816
	mov	[base_code],0Fh
-
 
5817
	call	store_nomem_instruction
-
 
5818
	jmp	instruction_assembled
-
 
5819
      vmread_check_size:
5791
	cmp	[code_type],64
5820
	cmp	[code_type],64
5792
	je	vmread_long
5821
	je	vmread_long
5793
	cmp	[operand_size],4
5822
	cmp	[operand_size],4
5794
	je	vmx_size_ok
5823
	jne	invalid_operand_size
5795
	jmp	invalid_operand_size
-
 
5796
      vmread_long:
5824
	ret
-
 
5825
      vmread_long:
5797
	cmp	[operand_size],8
5826
	cmp	[operand_size],8
5798
	je	vmx_size_ok
5827
	jne	invalid_operand_size
5799
	jmp	invalid_operand_size
-
 
5800
vmwrite_instruction:
5828
	ret
-
 
5829
vmwrite_instruction:
5801
	mov	[extended_code],79h
5830
	mov	[extended_code],79h
5802
	lods	byte [esi]
5831
	lods	byte [esi]
5803
	call	get_size_operator
5832
	call	get_size_operator
5804
	cmp	al,10h
5833
	cmp	al,10h
5805
	jne	invalid_operand
5834
	jne	invalid_operand
5806
	lods	byte [esi]
5835
	lods	byte [esi]
5807
	call	convert_register
5836
	call	convert_register
5808
	mov	[postbyte_register],al
5837
	mov	[postbyte_register],al
5809
	lods	byte [esi]
5838
	cmp	[operand_size],4
-
 
5839
	jne	invalid_operand_size
-
 
5840
	mov	[operand_size],0
-
 
5841
	lods	byte [esi]
5810
	cmp	al,','
5842
	cmp	al,','
5811
	jne	invalid_operand
5843
	jne	invalid_operand
5812
	lods	byte [esi]
5844
	lods	byte [esi]
5813
	call	get_size_operator
5845
	call	get_size_operator
5814
	cmp	al,'['
5846
	cmp	al,10h
-
 
5847
	je	vmwrite_nomem
-
 
5848
	cmp	al,'['
5815
	jne	invalid_operand
5849
	jne	invalid_operand
5816
	call	get_address
5850
	call	get_address
5817
	jmp	vmread_check_size
5851
	call	vmread_check_size
5818
simple_svm_instruction:
5852
	jmp	vmx_size_ok
-
 
5853
      vmwrite_nomem:
-
 
5854
	lods	byte [esi]
-
 
5855
	call	convert_register
-
 
5856
	mov	bl,al
-
 
5857
	mov	[base_code],0Fh
-
 
5858
	call	store_nomem_instruction
-
 
5859
	jmp	instruction_assembled
-
 
5860
simple_svm_instruction:
5819
	push	eax
5861
	push	eax
5820
	mov	[base_code],0Fh
5862
	mov	[base_code],0Fh
5821
	mov	[extended_code],1
5863
	mov	[extended_code],1
5822
	lods	byte [esi]
5864
	lods	byte [esi]
5823
	call	get_size_operator
5865
	call	get_size_operator