The use of registry names as FreeBASIC symbols is still surprising in 64-bit.
@admin, can we do something about this?
No problem in 32-bit, even with gcc?
No problem as either '@n' or an underscore is added.
But on 64bit nothing is done.
@Manpcnin
You can use the new 64bit emitter : gas64 see https://freebasic.net/forum/viewtopic.php?f=8&t=27478
A '$' is added at the end of each name (global variable and procedure) so no problem. Local variables have already a suffixe added for getting an unique name.
do NEVER use any, in inline ASM used specifiers, as 'names' in FB-code and,
you'll never fall into that 'open' trap (as soon as inline ASM is used, at the latest).
I guessed by the error message that it was an assembly keyword. What I considered a bug was that name mangling or whatever the FBC uses to tokenize Variables & Functions, passes a reserved ASM name through to the backend unchanged.
Well, the immediate backend is now generally GCC, which produces the bad asm..
It might be worth saying, a relatively unobtrusive workaround that allows you to keep the SS name is to #define SS as something else.
If you have more of them, you can stash them away in an #include somewhere. Just bear in mind that code in another module will also need to refer to it by the same name.
It might also work if you Alias the function name to something else. Not sure what effect that has on the emitted C/asm code.