Subversion Repositories Kolibri OS

Rev

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

Rev 2665 Rev 3010
Line 3310... Line 3310...
3310
	cmp	[code_type],64
3310
	cmp	[code_type],64
3311
	je	invalid_address_size
3311
	je	invalid_address_size
3312
	call	address_16bit_prefix
3312
	call	address_16bit_prefix
3313
      movs_store:
3313
      movs_store:
3314
	cmp	[segment_register],4
3314
	xor	ebx,ebx
3315
	je	movs_segment_ok
-
 
3316
	call	store_segment_prefix
3315
	call	store_segment_prefix_if_necessary
3317
      movs_segment_ok:
3316
	mov	al,0A4h
3318
	mov	al,0A4h
-
 
3319
      movs_check_size:
3317
      movs_check_size:
3320
	mov	bl,[operand_size]
3318
	mov	bl,[operand_size]
3321
	cmp	bl,1
3319
	cmp	bl,1
3322
	je	simple_instruction
3320
	je	simple_instruction
3323
	inc	al
3321
	inc	al
Line 3357... Line 3355...
3357
	cmp	[code_type],64
3355
	cmp	[code_type],64
3358
	je	invalid_address_size
3356
	je	invalid_address_size
3359
	call	address_16bit_prefix
3357
	call	address_16bit_prefix
3360
      lods_store:
3358
      lods_store:
3361
	cmp	[segment_register],4
3359
	xor	ebx,ebx
3362
	je	lods_segment_ok
-
 
3363
	call	store_segment_prefix
3360
	call	store_segment_prefix_if_necessary
3364
      lods_segment_ok:
3361
	mov	al,0ACh
3365
	mov	al,0ACh
-
 
3366
	jmp	movs_check_size
3362
	jmp	movs_check_size
3367
stos_instruction:
3363
stos_instruction:
3368
	mov	[base_code],al
3364
	mov	[base_code],al
3369
	lods	byte [esi]
3365
	lods	byte [esi]
3370
	call	get_size_operator
3366
	call	get_size_operator
Line 3450... Line 3446...
3450
	cmp	[code_type],64
3446
	cmp	[code_type],64
3451
	je	invalid_address_size
3447
	je	invalid_address_size
3452
	call	address_16bit_prefix
3448
	call	address_16bit_prefix
3453
      cmps_store:
3449
      cmps_store:
3454
	cmp	[segment_register],4
3450
	xor	ebx,ebx
3455
	je	cmps_segment_ok
-
 
3456
	call	store_segment_prefix
3451
	call	store_segment_prefix_if_necessary
3457
      cmps_segment_ok:
3452
	mov	al,0A6h
3458
	mov	al,0A6h
-
 
3459
	jmp	movs_check_size
3453
	jmp	movs_check_size
3460
ins_instruction:
3454
ins_instruction:
3461
	lods	byte [esi]
3455
	lods	byte [esi]
3462
	call	get_size_operator
3456
	call	get_size_operator
3463
	cmp	al,'['
3457
	cmp	al,'['
Line 3535... Line 3529...
3535
	cmp	[code_type],64
3529
	cmp	[code_type],64
3536
	je	invalid_address_size
3530
	je	invalid_address_size
3537
	call	address_16bit_prefix
3531
	call	address_16bit_prefix
3538
      outs_store:
3532
      outs_store:
3539
	cmp	[segment_register],4
3533
	xor	ebx,ebx
3540
	je	outs_segment_ok
-
 
3541
	call	store_segment_prefix
3534
	call	store_segment_prefix_if_necessary
3542
      outs_segment_ok:
3535
	mov	al,6Eh
3543
	mov	al,6Eh
-
 
3544
	jmp	ins_check_size
3536
	jmp	ins_check_size
3545
xlat_instruction:
3537
xlat_instruction:
3546
	lods	byte [esi]
3538
	lods	byte [esi]
3547
	call	get_size_operator
3539
	call	get_size_operator
3548
	cmp	al,'['
3540
	cmp	al,'['
Line 6878... Line 6870...
6878
	cmp	[code_type],64
6870
	cmp	[code_type],64
6879
	je	address_immediate_sib
6871
	je	address_immediate_sib
6880
	test	ch,44h
6872
	test	ch,44h
6881
	jnz	address_immediate_32bit
6873
	jnz	address_immediate_32bit
6882
	test	ch,22h
6874
	test	ch,88h
-
 
6875
	jnz	address_immediate_32bit
-
 
6876
	test	ch,22h
6883
	jnz	address_immediate_16bit
6877
	jnz	address_immediate_16bit
6884
	or	ch,ch
6878
	or	ch,ch
6885
	jnz	invalid_address_size
6879
	jnz	invalid_address_size
6886
	cmp	[code_type],16
6880
	cmp	[code_type],16
6887
	je	addressing_16bit
6881
	je	addressing_16bit