Page 1 of 1
FASM 1.66 Released :)
Posted: Mon May 08, 2006 10:54 am
by Polo
Just to tell everybody that the last version of Fasm has been released, it's time to include it in Purebasic

I'm not very sure of what it changes, but anyway

Posted: Mon May 08, 2006 11:40 am
by va!n
i dont think that it will bring any news to us (PB users)... btw, here are the changes:
Code: Select all
version 1.66 (May 7, 2006)
[+] Added DEFINE directive to preprocessor, which defines symbolic constants, the same kind
as EQU directive, however there's an important difference that DEFINE doesn't process
symbolic constants in the value before assigning it. For example:
a equ 1
a equ a+a
define b 1
define b b+b
defines the "a" constant with value "1+1", but the "b" is defined with value "b+b".
This directive may be useful in some advanced macroinstructions.
[-] Moved part of the conditional expression processing into parser,
for slightly better performance and lesser memory usage by assembler.
The logical values defined with "eq", "eqtype" and "in" operators are now evaluated
by the parser and if they are enough to determine the condition, the whole
block is processed accordingly. Thus this block:
if eax eq EAX | 0/0
nop
end if
is parsed into just NOP instruction, since parser is able to determine that the
condition is true, even though one of the logical values makes no sense -
but since this is none of the "eq", "eqtype" and "in" expressions, the parser doesn't
investigate.
[-] Also the assembler is now calculating only as many logical values as it needs to
determine the condition. So this block:
if defined alpha & alpha
end if
will not cause error when "alpha" is not defined, as it would with previous versions.
This is because after checking that "defined alpha" is false condition it doesn't need
to know the second logical value to determine the value of conjunction.
[+] Added "short" keyword for specifying jump type, the "jmp byte" form is now
obsolete and no longer correct - use "jmp short" instead.
[-] The size operator applied to jump no longer applies to the size of relative
displacement - now it applies to the size of target address.
[-] The RET instruction with 0 parameter is now assembled into short form, unless you
force using the 16-bit immediate with "word" operator.
[+] Added missing extended registers for the 32-bit addressing in long mode.
[+] Added "linkremove" and "linkinfo" section flags for MS COFF output.
[+] Added support for GOT offsets in ELF object formatter, which can be useful
when making position-independent code for shared libraries. For any label
you can get its offset relative to GOT by preceding it with "rva" operator
(the same keyword as for PE format is used, to avoid adding a new one, while
this one has very similar meaning).
[-] Changed ELF executable to use "segment" directive in place of "section",
to make the distinction between the run-time segments and linkable sections.
If you had a "section" directive in your ELF executables and they no longer assemble,
replace it with "segment".
[-] The PE formatter now always creates the fixups directory when told to - even when
there are no fixups to be put there (in such case it creates the directory with
one empty block).
[-] Some of the internal structures have been extended to provide the possibility of making
extensive symbol dumps.
[-] Corrected FIX directive to keep the value intact before assigning it to the
prioritized constant.
[+] The ` operator now works with any kind of symbol; when used with quoted string it
simply does nothing. Thus the sequence of ` operators applied to one symbol work the
same as if there was just one. In similar manner, the sequence of # operators now
works as if it was a single one - using such a sequence instead of escaping, which was
kept for some backward compatibility, is now deprecated.
[-] Corrected order of identifying assembler directives ("if db eq db" was
incorrectly interpreted as data definition).
[-] Many other small bugs fixed.
Posted: Mon May 08, 2006 11:44 am
by josku_x
I like FASM but I I like TASM the most. Is there any possibility to include another ASM compiler in PB and use it 'inline' or by adding ! in front of each command? Would be great if I can merge PB with TASM

Posted: Mon May 08, 2006 1:47 pm
by djes
I don't think so, as syntax of these two assemblers is so different. That would need a big rewrite of pb "basic to asm" interpreter.
Posted: Mon May 08, 2006 2:05 pm
by josku_x
I know that, but with some hard work I can achieve evrything. I still won't do much even if I can merge TASM with PB as I need the PB sources so PB can interfere with TASM.
Posted: Mon May 08, 2006 5:04 pm
by Fred
TASM isn't free, it's not an option.
Posted: Mon May 08, 2006 5:24 pm
by josku_x
I know, but that's why I like TASM, it's easy to use and it isn't even expensive.
Posted: Mon May 08, 2006 5:35 pm
by thefool
IMHO: Flat Assembler is cheaper, and just as easy :p
On top of that, FASM is more updated afaik. Fasm supports 64bit natively (Fred

) and its available for both windows and linux.
so; Tasm is not an option

Posted: Mon May 08, 2006 5:46 pm
by josku_x
FASM may be great, but programming 32bit Windows applications using TASM is a lot easier and I'm not saying TASM should be in the place of FASM, so why do you tell me 'TASM is not an option' ?? Option for what?
Posted: Mon May 08, 2006 5:48 pm
by thefool
An option. Just that.
fishface!!!

Posted: Mon May 08, 2006 6:24 pm
by Polo
Sorry, but Fasm is perfect, the guy who did is a very nice guy too !
I like the way it is

Posted: Tue May 09, 2006 2:19 am
by Thalius
Write your own Syntax converter for TASM =P ...
pbcompiler /commented ftw!
Thalius
Posted: Tue May 09, 2006 6:46 am
by josku_x
OK THanks for the info. I maybe try to do a PB-Source to TASM converter sometimes, but right now I don't have the time.
ftw!
ftw? should that mean Fuck The Way?

Posted: Tue May 09, 2006 7:15 am
by Dare2
Usually "For the win.", less frequently "'Forget' the world", here it probably means "Fasm's The Winner!"
