diff --unified --recursive --new-file fasm-1.52/source/expressi.inc fasm-1.53/source/expressi.inc --- fasm-1.52/source/expressi.inc 2004-05-06 10:52:54.000000000 +0200 +++ fasm-1.53/source/expressi.inc 2004-06-23 10:53:00.000000000 +0200 @@ -1323,37 +1323,47 @@ xor [ebx+4],eax jmp calculation_loop xor_byte: - cmp dword [edi+4],0 - jne xor_qword - cmp word [edi+2],0 - jne xor_qword - cmp byte [edi+1],0 - jne xor_qword + mov eax,[edi+4] + or eax,[ebx+4] + jnz xor_qword + mov eax,[edi] + or eax,[ebx] + and eax,not 0FFh + jnz xor_qword mov al,[edi] xor [ebx],al jmp calculation_loop xor_word: - cmp dword [edi+4],0 - jne xor_qword - cmp word [edi+2],0 - jne xor_qword + mov eax,[edi+4] + or eax,[ebx+4] + jnz xor_qword + mov ax,[edi+2] + or ax,[ebx+2] + jnz xor_qword mov ax,[edi] xor [ebx],ax jmp calculation_loop xor_dword: - cmp dword [edi+4],0 - jne xor_qword + mov eax,[edi+4] + or eax,[ebx+4] + jnz xor_qword mov eax,[edi] xor [ebx],eax jmp calculation_loop xor_pword: - cmp word [edi+6],0 - jne xor_qword + mov ax,[edi+6] + or ax,[ebx+6] + jnz xor_qword mov eax,[edi] xor [ebx],eax mov ax,[edi+4] xor [ebx+4],ax jmp calculation_loop + shr_negative: + not dword [edi] + not dword [edi+4] + add dword [edi],1 + adc dword [edi+4],0 calculate_shl: mov eax,dword [edi+4] bt eax,31 @@ -1409,12 +1419,6 @@ mov [ebx],eax mov dword [ebx+4],0 jmp calculation_loop - shr_negative: - not dword [edi] - not dword [edi+4] - add dword [edi],1 - adc dword [edi+4],0 - jmp calculate_shl zero_value: mov dword [ebx],0 mov dword [ebx+4],0 diff --unified --recursive --new-file fasm-1.52/source/formats.inc fasm-1.53/source/formats.inc --- fasm-1.52/source/formats.inc 2004-05-06 10:52:54.000000000 +0200 +++ fasm-1.53/source/formats.inc 2004-06-23 10:53:00.000000000 +0200 @@ -553,8 +553,9 @@ shl ecx,9 sub ecx,eax movzx eax,word [esi+2] - add ecx,eax mov edx,edi + add ecx,eax + jz read_stub_code push ecx dec ecx shr ecx,3 @@ -566,6 +567,7 @@ xor eax,eax rep stos dword [edi] pop ecx + read_stub_code: call read call close mov edx,edi @@ -2359,7 +2361,7 @@ mov [ebx+4],eax mov [ebx+8],edi mov al,4 - mov [ebx+10h],al + mov [ebx+10h],eax mov al,111b mov [ebx+14h],eax mov [current_section],ebx diff --unified --recursive --new-file fasm-1.52/source/preproce.inc fasm-1.53/source/preproce.inc --- fasm-1.52/source/preproce.inc 2004-05-06 10:52:54.000000000 +0200 +++ fasm-1.53/source/preproce.inc 2004-06-23 10:53:00.000000000 +0200 @@ -1453,7 +1453,6 @@ or [macro_status],al pop [counter_limit] [counter] pop [macro_block_line_number] [macro_block_line] [macro_block] [macro_constants] - jmp line_preprocessed include_file: diff --unified --recursive --new-file fasm-1.52/source/version.inc fasm-1.53/source/version.inc --- fasm-1.52/source/version.inc 2004-05-06 10:52:54.000000000 +0200 +++ fasm-1.53/source/version.inc 2004-06-23 10:53:00.000000000 +0200 @@ -1,5 +1,5 @@ -; flat assembler version 1.52 +; flat assembler version 1.53 ; Copyright (c) 1999-2004, Tomasz Grysztar. ; All rights reserved. ; @@ -33,7 +33,7 @@ ; cannot simply be copied and put under another distribution licence ; (including the GNU Public Licence). -VERSION_STRING equ "1.52" +VERSION_STRING equ "1.53" VERSION_MAJOR = 1 -VERSION_MINOR = 52 +VERSION_MINOR = 53 diff --unified --recursive --new-file fasm-1.52/source/x86.inc fasm-1.53/source/x86.inc --- fasm-1.52/source/x86.inc 2004-05-06 10:52:54.000000000 +0200 +++ fasm-1.53/source/x86.inc 2004-06-23 10:53:00.000000000 +0200 @@ -5297,6 +5297,8 @@ je mmx_imm8 jmp instruction_assembled sse_xmmreg_xmmreg: + cmp [mmx_prefix],66h + jne sse_xmmreg_xmmreg_ok cmp [extended_code],12h je invalid_operand cmp [extended_code],16h