flat assembler
Message board for the users of flat assembler.

Index > Main > flat assembler 1.71.40

Author
Thread Post new topic Reply to topic
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8359
Location: Kraków, Poland
Tomasz Grysztar 19 Oct 2015, 16:27
This is a new development release that includes the new Intel AVX-512 instructions and few other new extensions from Intel. The added instruction sets follow the Intel reference 319433-023 from August 2015.

Some small changes had to be made in the existing code base and therefore this version requires more testing, to make sure that it doesn't break anything (other than reserving a bunch of new words for the new mnemonics). It took me a long time to prepare it (because my focus has been moved to fasm g instead) and I am releasing it as early as possible, at the price of the increased risk of bugs.

In some rare cases the new EVEX encoding introduced by AVX-512 may produce a shorter encoding of AVX/AVX2 instruction than the original VEX one. The new assembly mode setting "useavx512" is introduced to allow fasm to optimize the old AVX/AVX2 instructions this way. The "useavx256" restores the default mode, in which the AVX/AVX2 instructions are always encoded classically.
Post 19 Oct 2015, 16:27
View user's profile Send private message Visit poster's website Reply with quote
MIHIP



Joined: 14 Feb 2013
Posts: 130
MIHIP 19 Oct 2015, 16:56
Great release. I will start to searching bugs NOW.
Post 19 Oct 2015, 16:56
View user's profile Send private message Visit poster's website Reply with quote
coen



Joined: 13 Oct 2015
Posts: 14
coen 20 Oct 2015, 10:50
I haven't been using FASM very long but good to see that new versions are still being released Smile. Is there a roadmap of any future versions available somewhere?

Also I was wondering what the best way is to test AVX-512 instructions since it's currently not available in any processors as far as I know, using the Intel Software Development Emulator or perhaps something else?
Post 20 Oct 2015, 10:50
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20451
Location: In your JS exploiting you and your system
revolution 20 Oct 2015, 11:58
coen wrote:
Also I was wondering what the best way is to test AVX-512 instructions since it's currently not available in any processors as far as I know, using the Intel Software Development Emulator or perhaps something else?
If you mean testing the assembler output, rather than testing the operation, then a disassembler and/or manually checking the binary would be viable options.
Post 20 Oct 2015, 11:58
View user's profile Send private message Visit poster's website Reply with quote
coen



Joined: 13 Oct 2015
Posts: 14
coen 20 Oct 2015, 13:27
revolution wrote:
If you mean testing the assembler output, rather than testing the operation, then a disassembler and/or manually checking the binary would be viable options.
No I actually meant running the application to test if everything works, the performance will be crap but it's nice to test if it all works as expected.
Post 20 Oct 2015, 13:27
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20451
Location: In your JS exploiting you and your system
revolution 22 Oct 2015, 04:00
I think it is worth mentioning the problem of using some of the new instructions inside of preprocessor blocks (macro/struc/rept/match/irp/irps/irpv/postpone).

Notice in the following example that the closing braces for {k6} and {rd-see} need to be escaped with a backslash to allow assembly.
Code:
rept 1 {
        vaddps zmm7 {k6\}, zmm2, zmm4, {rd-sae\} ;<--- the closing braces must be escaped
}    
Post 22 Oct 2015, 04:00
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8359
Location: Kraków, Poland
Tomasz Grysztar 22 Oct 2015, 09:46
Thank you for reminding - this is a detail I planned to mention in initial announcement, but I forgot.

PS 1.71.41 has no separate announcement, because it is it just a very minor bug fix.
Post 22 Oct 2015, 09:46
View user's profile Send private message Visit poster's website Reply with quote
JohnFound



Joined: 16 Jun 2003
Posts: 3499
Location: Bulgaria
JohnFound 22 Oct 2015, 13:18
Hm, IMO, these curly brackets in the instruction and the need to escape them, can make problems with some more sophisticated macros.

As long as the curly brackets in FASM are reserved for the preprocessor syntax, isn't it possible to use for example round brackets instead. It will improve the readability of the code and will not cause problems with the macro definitions.
Post 22 Oct 2015, 13:18
View user's profile Send private message Visit poster's website ICQ Number Reply with quote
l_inc



Joined: 23 Oct 2009
Posts: 881
l_inc 22 Oct 2015, 13:31
JohnFound wrote:
these curly brackets in the instruction and the need to escape them, can make problems with some more sophisticated macros

Yes, very likely. Like passing an instruction as an argument of a macro works OK until you put the argument inside of a nested macroblock:
Code:
macro msg i
{
    macro instruction \{ i \}
    instruction
    display 'World',13,10
}

msg rept 2 { display 'Hello ' }    


Unfortunately these curly braces are natural in the ARM instruction architecture and have always been there in the ARM port.

_________________
Faith is a superposition of knowledge and fallacy
Post 22 Oct 2015, 13:31
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20451
Location: In your JS exploiting you and your system
revolution 22 Oct 2015, 14:25
JohnFound wrote:
As long as the curly brackets in FASM are reserved for the preprocessor syntax, isn't it possible to use for example round brackets instead. It will improve the readability of the code and will not cause problems with the macro definitions.
It depends upon how much EAVX code you like to put inside macros. Both schemes can be accommodated just like with the ARM syntax. But deviating from the "normal" Intel syntax with regard to the basic format could create more confusion IMO. The round brackets are for arithmetic computations, and such computations can also use register names, so that would be a source of confusion if you use round brackets.
Post 22 Oct 2015, 14:25
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8359
Location: Kraków, Poland
Tomasz Grysztar 25 Oct 2015, 21:56
coen wrote:
I haven't been using FASM very long but good to see that new versions are still being released Smile. Is there a roadmap of any future versions available somewhere?
The road map for the fasm 1.x line is quite short now. I planned to have AVX-512 supported in order to release 1.72 stable milestone, and all that is left to do is to find and correct bugs, and add a section about AVX-512 to manual. Currently I'm not planning to add any other big features to fasm 1, as I focus more on my new pet project, fasm g.
Post 25 Oct 2015, 21:56
View user's profile Send private message Visit poster's website Reply with quote
l_inc



Joined: 23 Oct 2009
Posts: 881
l_inc 25 Oct 2015, 22:32
Tomasz Grysztar
No binary relocation support should be expected anymore in fasm 1? Seems like you already had a prototype implementation but smth. went wrong. The syntax choice wasn't satisfactory enough?

_________________
Faith is a superposition of knowledge and fallacy
Post 25 Oct 2015, 22:32
View user's profile Send private message Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 8359
Location: Kraków, Poland
Tomasz Grysztar 26 Oct 2015, 13:17
I had no real prototype, only the design in my head. It looked nice, because it was going to connect many pieces that already are there in fasm 1, and do it in a simple and straightforward way. But the more I thought about how much more can I squeeze from the fasm 1 engine, the more I realized that I regretted not having tried to make fasm 2. That caused the big shift last year, when I decided to get the new engine going, no matter the price. It came out better than I thought it would - since 2007 I've been abandoning fasm 2 design at least a few times, every time hitting the wall of irreconcilable contradictions in my schemes, but this time I managed to make something that works. But it stole a lot of my time that could otherwise go to fasm 1 development (I previously planned to have AVX-512 ready a year ago), and also stole the most of my attention. But I did not say that no new features like this one will get added into fasm 1 in the future - all I'm saying is "not at the moment".
Post 26 Oct 2015, 13:17
View user's profile Send private message Visit poster's website Reply with quote
l_inc



Joined: 23 Oct 2009
Posts: 881
l_inc 26 Oct 2015, 22:33
Tomasz Grysztar
Quote:
But I did not say that no new features like this one will get added into fasm 1 in the future - all I'm saying is "not at the moment".

That's good enough for me. Thanks for elaborating.

_________________
Faith is a superposition of knowledge and fallacy
Post 26 Oct 2015, 22:33
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.