Subversion Repositories Kolibri OS

Rev

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

Rev 607 Rev 707
Line 5020... Line 5020...
5020
	mov	[extended_code],0D6h
5020
	mov	[extended_code],0D6h
5021
	call	store_nomem_instruction
5021
	call	store_nomem_instruction
5022
	jmp	instruction_assembled
5022
	jmp	instruction_assembled
5023
 
5023
 
Line -... Line 5024...
-
 
5024
sse_ps_instruction_imm8:
-
 
5025
	mov	[immediate_size],8
5024
sse_ps_instruction:
5026
sse_ps_instruction:
5025
	mov	[mmx_size],16
5027
	mov	[mmx_size],16
5026
	jmp	sse_instruction
5028
	jmp	sse_instruction
-
 
5029
sse_pd_instruction_imm8:
-
 
5030
	mov	[immediate_size],8
5027
sse_pd_instruction:
5031
sse_pd_instruction:
5028
	mov	[mmx_size],16
5032
	mov	[mmx_size],16
5029
	mov	[operand_prefix],66h
5033
	mov	[operand_prefix],66h
5030
	jmp	sse_instruction
5034
	jmp	sse_instruction
5031
sse_ss_instruction:
5035
sse_ss_instruction:
Line 5084... Line 5088...
5084
	mov	al,[mmx_size]
5088
	mov	al,[mmx_size]
5085
	cmp	[operand_size],al
5089
	cmp	[operand_size],al
5086
	jne	invalid_operand_size
5090
	jne	invalid_operand_size
5087
      sse_mem_size_ok:
5091
      sse_mem_size_ok:
5088
	cmp	[extended_code],0C6h
5092
	cmp	[immediate_size],8
5089
	je	mmx_imm8
5093
	je	mmx_imm8
5090
	call	store_instruction
5094
	cmp	[immediate_size],-1
-
 
5095
	jne	sse_ok
-
 
5096
	call	take_additional_xmm0
-
 
5097
      sse_ok:
-
 
5098
	call	store_instruction
5091
	jmp	instruction_assembled
5099
	jmp	instruction_assembled
5092
      sse_xmmreg_xmmreg:
5100
      sse_xmmreg_xmmreg:
5093
	cmp	[operand_prefix],66h
5101
	cmp	[operand_prefix],66h
5094
	jne	sse_xmmreg_xmmreg_ok
5102
	jne	sse_xmmreg_xmmreg_ok
5095
	cmp	[extended_code],12h
5103
	cmp	[extended_code],12h
Line 5101... Line 5109...
5101
	call	convert_mmx_register
5109
	call	convert_mmx_register
5102
	cmp	ah,16
5110
	cmp	ah,16
5103
	jne	invalid_operand_size
5111
	jne	invalid_operand_size
5104
	mov	bl,al
5112
	mov	bl,al
5105
	cmp	[extended_code],0C6h
5113
	cmp	[immediate_size],8
5106
	je	mmx_nomem_imm8
5114
	je	mmx_nomem_imm8
5107
	call	store_nomem_instruction
5115
	cmp	[immediate_size],-1
-
 
5116
	jne	sse_nomem_ok
-
 
5117
	call	take_additional_xmm0
-
 
5118
      sse_nomem_ok:
-
 
5119
	call	store_nomem_instruction
5108
	jmp	instruction_assembled
5120
	jmp	instruction_assembled
5109
ps_dq_instruction:
5121
      take_additional_xmm0:
-
 
5122
	lods	byte [esi]
-
 
5123
	cmp	al,','
-
 
5124
	jne	invalid_operand
-
 
5125
	lods	byte [esi]
-
 
5126
	cmp	al,10h
-
 
5127
	jne	invalid_operand
-
 
5128
	lods	byte [esi]
-
 
5129
	call	convert_mmx_register
-
 
5130
	cmp	ah,16
-
 
5131
	jne	invalid_operand_size
-
 
5132
	test	al,al
-
 
5133
	jnz	invalid_operand
-
 
5134
	ret
-
 
5135
 
-
 
5136
ps_dq_instruction:
5110
	mov	[postbyte_register],al
5137
	mov	[postbyte_register],al
5111
	mov	[operand_prefix],66h
5138
	mov	[operand_prefix],66h
5112
	mov	[base_code],0Fh
5139
	mov	[base_code],0Fh
5113
	mov	[extended_code],73h
5140
	mov	[extended_code],73h
5114
	lods	byte [esi]
5141
	lods	byte [esi]
Line 5583... Line 5610...
5583
	mov	al,byte [value]
5610
	mov	al,byte [value]
5584
	stos	byte [edi]
5611
	stos	byte [edi]
5585
	jmp	instruction_assembled
5612
	jmp	instruction_assembled
5586
 
5613
 
Line -... Line 5614...
-
 
5614
sse4_instruction_38_xmm0:
-
 
5615
	mov	[immediate_size],-1
-
 
5616
	jmp	sse4_instruction_38
-
 
5617
sse4_instruction_38_imm8:
-
 
5618
	mov	[immediate_size],8
-
 
5619
sse4_instruction_38:
-
 
5620
	mov	[operand_prefix],66h
-
 
5621
	mov	[base_code],0Fh
-
 
5622
	mov	[supplemental_code],al
-
 
5623
	mov	al,38h
-
 
5624
	jmp	sse_instruction
-
 
5625
sse4_instruction_3a_imm8:
-
 
5626
	mov	[immediate_size],8
-
 
5627
sse4_instruction_3a:
-
 
5628
	mov	[operand_prefix],66h
-
 
5629
	mov	[base_code],0Fh
-
 
5630
	mov	[supplemental_code],al
-
 
5631
	mov	al,3Ah
-
 
5632
	jmp	sse_instruction
-
 
5633
 
5587
fxsave_instruction:
5634
fxsave_instruction:
5588
	mov	[extended_code],0AEh
5635
	mov	[extended_code],0AEh
5589
	mov	[base_code],0Fh
5636
	mov	[base_code],0Fh
5590
	mov	[postbyte_register],al
5637
	mov	[postbyte_register],al
5591
	lods	byte [esi]
5638
	lods	byte [esi]
Line 6061... Line 6108...
6061
	call	calculate_relative_offset
6108
	call	calculate_relative_offset
6062
	mov	[address_high],edx
6109
	mov	[address_high],edx
6063
	cdq
6110
	cdq
6064
	cmp	edx,[address_high]
6111
	cmp	edx,[address_high]
6065
	jne	value_out_of_range
6112
	je	address_high_ok
-
 
6113
	cmp	[error_line],0
-
 
6114
	jne	address_high_ok
-
 
6115
	mov	ebx,[current_line]
-
 
6116
	mov	[error_line],ebx
-
 
6117
	mov	[error],value_out_of_range
6066
	mov	edx,eax
6118
      address_high_ok:
-
 
6119
	mov	edx,eax
6067
	ror	ecx,16
6120
	ror	ecx,16
6068
	mov	cl,[value_type]
6121
	mov	cl,[value_type]
6069
	rol	ecx,16
6122
	rol	ecx,16
6070
	mov	bx,0FF00h
6123
	mov	bx,0FF00h
6071
      address_ok:
6124
      address_ok: