NASM - The Netwide Assembler
NASM Forum => Using NASM => Topic started by: Zdr on July 10, 2011, 01:15:38 PM
-
Hello, I use nasm -f bin, but I need very specific encodings to compensate for unusual alignment constraints.
Using "dword" used to force nasm to generate what I want:
and eax, dword 4 ; 25 04 00 00 00
But now even with "dword" it generates this:
83 e0 04
I understand that this change is a better default for most people, but is there still a way to force it to the long dword immediate encoding? I would prefer not to make my source code unreadable with dd's :-)
Thank you!
-
Hello, I use nasm -f bin, but I need very specific encodings to compensate for unusual alignment constraints.
Using "dword" used to force nasm to generate what I want:
and eax, dword 4 ; 25 04 00 00 00
But now even with "dword" it generates this:
83 e0 04
I understand that this change is a better default for most people, but is there still a way to force it to the long dword immediate encoding? I would prefer not to make my source code unreadable with dd's :-)
Thank you!
Ah, I solved my own problem, you now need to add the `strict` qualifier, so 'and eax, strict dword 4' generated the encoding I want.
This works, although the documentation suggests I shouldnt have to use it unless I use optimization (I don't). Maybe that is a bug (either in documentation or nasm)?
Thanks!
-
Yeah... perhaps a defect in the documentation. Optimization is "on" by default now. You can turn it off with "-O0" on the command line, if you want it off throughout the file. As you apparently know, "-O0" used to be the default. Not everyone is happy with the change, but as you say, it's probably a better default for most people. I agree that:
and eax, strict dword 4
is uglier than a bulldog's hind end, but it is rarely needed. In your case, "-O0" may be a better choice, for better "control" thoughout.
"You can't please everyone, but with enough command line options, you can give the impression that you're trying! " :)
Best,
Frank