flat assembler
Message board for the users of flat assembler.
Index
> Compiler Internals > Bug in relative instruction in 64-bit mode |
Author |
|
LocoDelAssembly 08 Feb 2014, 23:59
Tried the following code with versions 1.71.10, 1.71.17 and 1.71.18, all compiled without trouble.
Code: use64 org 0xFFC00000 include "macro/if.inc" ; Only change I made MainProcedure: .if ([Items]=0)|([Count]<>0) nop .endif ret Items dq ? Count dq ? |
|||
08 Feb 2014, 23:59 |
|
baldr 09 Feb 2014, 07:20
CandyMan,
There should be something really strange with your version of fasm, I've managed to compile your source with this list of stock Win32 compilers: Code: >FASM.EXE out_of_range.fasm flat assembler version 1.66 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.68 (1505318 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.69.16 (1504489 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.69.32 (1504900 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.69.48 (1504794 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.69.52 (1502497 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.70 (1502417 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.70.01 (1502540 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.70.02 (1502105 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.70.03 (1501808 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.71.00 (1502867 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.71.04 (1499272 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.71.08 (1500163 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.71.12 (1048576 kilobytes memory) 3 passes, 22 bytes. >FASM.EXE out_of_range.fasm flat assembler version 1.71.16 (1048576 kilobytes memory) 3 passes, 22 bytes. Does anybody have intact 1.60 fasm distribution archive? |
|||
09 Feb 2014, 07:20 |
|
revolution 09 Feb 2014, 08:54
baldr wrote: Does anybody have intact 1.60 fasm distribution archive? Code: flat assembler version 1.60 .if ([Items]=0)|([Count]<>0) C:\Documents and Settings\We are the Borg\Our Documents/macro/if.inc [12] .if [7]: cmp v1,0 error: invalid operand. Code: flat assembler version 1.62 .if ([Items]=0)|([Count]<>0) C:\Documents and Settings\We are the Borg\Our Documents/macro/if.inc [12] .if [7]: JCOND __ELSE,arg C:\Documents and Settings\We are the Borg\Our Documents/macro/if.inc [95] JCOND [16]: cmp v1,v2 error: invalid operand. Code: flat assembler version 1.66 3 passes, 22 bytes. |
|||
09 Feb 2014, 08:54 |
|
CandyMan 09 Feb 2014, 12:11
Change "|" with "&" and try again
Code: use64 org 0xFFC00000 include "macro/if.inc" MainProcedure: .if ([Items]=0)&([Count]<>0) nop .endif ret Items dq ? Count dq ? _________________ smaller is better |
|||
09 Feb 2014, 12:11 |
|
l_inc 09 Feb 2014, 13:02
Seems in fact to be a bug. Minimal reproducible example:
Code: use64 org 0x80000000-4 label lbl at @F jmp lbl @@: Here lbl is assumed to be located at 0 and the relative offset overflow is for some reason a non-continuable error. Thus no additional pass is made to resolve the label correctly. _________________ Faith is a superposition of knowledge and fallacy |
|||
09 Feb 2014, 13:02 |
|
revolution 09 Feb 2014, 13:09
'tis now sticky.
|
|||
09 Feb 2014, 13:09 |
|
Tomasz Grysztar 09 Feb 2014, 13:34
Please check the 1.71.19 development release.
|
|||
09 Feb 2014, 13:34 |
|
l_inc 09 Feb 2014, 13:53
Tomasz Grysztar
I just noticed, that the compiled console version in the archive with 1.71.17 is actually a 1.71.18 . _________________ Faith is a superposition of knowledge and fallacy |
|||
09 Feb 2014, 13:53 |
|
Tomasz Grysztar 09 Feb 2014, 13:57
It had been assembled with a wrong version string by mistake, but it not the same as 1.71.18 feature-wise.
|
|||
09 Feb 2014, 13:57 |
|
l_inc 09 Feb 2014, 13:58
Tomasz Grysztar
I checked the irpv support, and it's present there. _________________ Faith is a superposition of knowledge and fallacy |
|||
09 Feb 2014, 13:58 |
|
Tomasz Grysztar 09 Feb 2014, 14:01
There was a 1.71.17 package that had a 1.71.18 version string before I even started working on IRPV. The one that you have must be some variant mixed later (probably when I tried to correct that initial mistake).
|
|||
09 Feb 2014, 14:01 |
|
sid123 09 Feb 2014, 14:47
Wow this thread is sticky!
|
|||
09 Feb 2014, 14:47 |
|
HaHaAnonymous 09 Feb 2014, 16:42
[ Post removed by author. ]
Last edited by HaHaAnonymous on 28 Feb 2015, 18:17; edited 1 time in total |
|||
09 Feb 2014, 16:42 |
|
DOS386 19 Feb 2014, 16:07
> console version in the archive with 1.71.17 is actually a 1.71.18
same problem 1.71.16-vs-1.71.17 (YES I have both ...) and there is a strange edit in 1.71.16.5 in BLOCKS.INC : Code: call set_line jc full_lines_inserted jmp insert_full_lines full_lines_inserted: pop edi mov eax,[caret_line] and a new file "fasm17119.zip\SOURCE\IDE\VERSION.INC 1'859 2014-01-27 15:17" ... maybe "EVERSION.INC" would be better |
|||
19 Feb 2014, 16:07 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.