From 0315c6369b075815b522c6aeb69f28089c4267b1 Mon Sep 17 00:00:00 2001 From: Tomasz Grysztar Date: Fri, 13 May 2016 12:00:00 +0000 Subject: [PATCH] release 1.71.52 --- FASM.TXT | 5 +++-- SOURCE/PREPROCE.INC | 2 +- SOURCE/TABLES.INC | 34 +++++++++++++++++++--------------- SOURCE/VERSION.INC | 2 +- SOURCE/X86_64.INC | 22 ++++++++-------------- WHATSNEW.TXT | 7 +++++++ 6 files changed, 39 insertions(+), 33 deletions(-) diff --git a/FASM.TXT b/FASM.TXT index 7059cbd..d8793d4 100644 --- a/FASM.TXT +++ b/FASM.TXT @@ -687,8 +687,9 @@ instructon is to reverse the sign of the operand from positive to negative or from negative to positive. Rules for the operand are the same as for the "inc" instruction. "xadd" exchanges the destination operand with the source operand, then loads -the sum of the two values into the destination operand. Rules for the operands -are the same as for the "add" instruction. +the sum of the two values into the destination operand. The destination operand +may be a general register or memory, the source operand must be a general +register. All the above binary arithmetic instructions update SF, ZF, PF and OF flags. SF is always set to the same value as the result's sign bit, ZF is set when all the bits of result are zero, PF is set when low order eight bits of result diff --git a/SOURCE/PREPROCE.INC b/SOURCE/PREPROCE.INC index c4dc7ee..aa9e001 100644 --- a/SOURCE/PREPROCE.INC +++ b/SOURCE/PREPROCE.INC @@ -101,7 +101,7 @@ preprocessor: or al,al jz predefinition_converted cmp al,20h - je convert_line_data + je convert_predefinition cmp al,3Bh je invalid_definition cmp al,5Ch diff --git a/SOURCE/TABLES.INC b/SOURCE/TABLES.INC index fe6e90f..c8095f0 100644 --- a/SOURCE/TABLES.INC +++ b/SOURCE/TABLES.INC @@ -684,9 +684,9 @@ instructions_4: db 'cdqe',98h dw simple_instruction_64bit-instruction_handler db 'clac',0CAh - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'clgi',0DDh - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'clts',6 dw simple_extended_instruction-instruction_handler db 'clwb',6 @@ -898,9 +898,9 @@ instructions_4: db 'smsw',14h dw pm_store_word_instruction-instruction_handler db 'stac',0CBh - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'stgi',0DCh - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'stos',0AAh dw stos_instruction-instruction_handler db 'test',0 @@ -918,7 +918,7 @@ instructions_4: db 'xchg',0 dw xchg_instruction-instruction_handler db 'xend',0D5h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'xlat',0D7h dw xlat_instruction-instruction_handler instructions_5: @@ -1421,7 +1421,7 @@ instructions_5: db 'xsave',100b dw fxsave_instruction-instruction_handler db 'xtest',0D6h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler instructions_6: db 'aesdec',0DEh dw sse4_instruction_66_38-instruction_handler @@ -1747,12 +1747,14 @@ instructions_6: dw simple_instruction_16bit-instruction_handler db 'rdmsrq',32h dw simple_extended_instruction_64bit-instruction_handler + db 'rdpkru',0EEh + dw simple_instruction_0f_01-instruction_handler db 'rdrand',110b dw rdrand_instruction-instruction_handler db 'rdseed',111b dw rdrand_instruction-instruction_handler - db 'rdtscp',1 - dw rdtscp_instruction-instruction_handler + db 'rdtscp',0F9h + dw simple_instruction_0f_01-instruction_handler db 'repeat',0 dw repeat_directive-instruction_handler db 'setalc',0D6h @@ -1828,7 +1830,7 @@ instructions_6: db 'vmaxss',5Fh dw avx_ss_instruction_sae-instruction_handler db 'vmcall',0C1h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'vminpd',5Dh dw avx_pd_instruction_sae-instruction_handler db 'vminps',5Dh @@ -1856,7 +1858,7 @@ instructions_6: db 'vmulss',59h dw avx_ss_instruction_er-instruction_handler db 'vmxoff',0C4h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'vpabsb',1Ch dw avx_single_source_bw_instruction_38-instruction_handler db 'vpabsd',1Eh @@ -1995,16 +1997,18 @@ instructions_6: dw simple_extended_instruction-instruction_handler db 'wrmsrq',30h dw simple_extended_instruction_64bit-instruction_handler + db 'wrpkru',0EFh + dw simple_instruction_0f_01-instruction_handler db 'xabort',0 dw xabort_instruction-instruction_handler db 'xbegin',0 dw xbegin_instruction-instruction_handler db 'xgetbv',0D0h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'xrstor',101b dw fxsave_instruction-instruction_handler db 'xsetbv',0D1h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler instructions_7: db 'blcfill',11h dw tbm_instruction-instruction_handler @@ -2271,7 +2275,7 @@ instructions_7: db 'vmclear',6 dw vmclear_instruction-instruction_handler db 'vmmcall',0D9h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'vmovapd',28h dw avx_movpd_instruction-instruction_handler db 'vmovaps',28h @@ -2722,7 +2726,7 @@ instructions_8: db 'vldmxcsr',10b dw vldmxcsr_instruction-instruction_handler db 'vmlaunch',0C2h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'vmovddup',12h dw avx_movddup_instruction-instruction_handler db 'vmovdqu8',6Fh @@ -2740,7 +2744,7 @@ instructions_8: db 'vmpsadbw',42h dw avx_pi_instruction_3a_imm8_noevex-instruction_handler db 'vmresume',0C3h - dw simple_vmx_instruction-instruction_handler + dw simple_instruction_0f_01-instruction_handler db 'vpaddusb',0DCh dw avx_bw_instruction-instruction_handler db 'vpaddusw',0DDh diff --git a/SOURCE/VERSION.INC b/SOURCE/VERSION.INC index 312ea6a..13d34dd 100644 --- a/SOURCE/VERSION.INC +++ b/SOURCE/VERSION.INC @@ -33,7 +33,7 @@ ; cannot simply be copied and put under another distribution licence ; (including the GNU Public Licence). -VERSION_STRING equ "1.71.51" +VERSION_STRING equ "1.71.52" VERSION_MAJOR = 1 VERSION_MINOR = 71 diff --git a/SOURCE/X86_64.INC b/SOURCE/X86_64.INC index 6eff29b..61a505f 100644 --- a/SOURCE/X86_64.INC +++ b/SOURCE/X86_64.INC @@ -3633,12 +3633,13 @@ invlpg_instruction: swapgs_instruction: cmp [code_type],64 jne illegal_instruction -rdtscp_instruction: - mov [base_code],0Fh - mov [extended_code],1 - mov [postbyte_register],7 - mov bl,al - jmp nomem_instruction_ready +simple_instruction_0f_01: + mov ah,al + mov al,0Fh + stos byte [edi] + mov al,1 + stos word [edi] + jmp instruction_assembled basic_486_instruction: mov [base_code],0Fh @@ -5858,13 +5859,6 @@ adx_instruction: call operand_64bit jmp nomem_instruction_ready -simple_vmx_instruction: - mov ah,al - mov al,0Fh - stos byte [edi] - mov al,1 - stos word [edi] - jmp instruction_assembled vmclear_instruction: mov [opcode_prefix],66h jmp vmx_instruction @@ -6005,7 +5999,7 @@ skinit_instruction: cmp ax,0400h jne invalid_operand mov al,0DEh - jmp simple_vmx_instruction + jmp simple_instruction_0f_01 invlpga_instruction: push eax mov [base_code],0Fh diff --git a/WHATSNEW.TXT b/WHATSNEW.TXT index 0bc520d..1dda789 100644 --- a/WHATSNEW.TXT +++ b/WHATSNEW.TXT @@ -2,6 +2,13 @@ Visit http://flatassembler.net/ for more information. +version 1.71.52 (May 13, 2016) + +[+] Added "rdpkru" and "wrpkru" instructions. + +[-] Fixed a bug in processing the "-d" switch. + + version 1.71.51 (Feb 08, 2016) [-] Corrected the signalling of "operand size not specified" error with