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 :o

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 :D) and its available for both windows and linux.

so; Tasm is not an option :P

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!!! :P

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! :D

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!" :)