0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00
Commit Graph

5363 Commits

Author SHA1 Message Date
H. Peter Anvin (Intel)
9abbaa133d BR 2292702: fix ENQCMDS and TILELOADT1 instructions
Wrong prefixes for ENQCMDS and TILELOADT1.

Reported-by:  Iouri Kharon <bc-info@styx.cabel.net>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-27 11:44:04 -07:00
H. Peter Anvin
92d40ad8e4 nasmdoc.src: document when $*? and $*?? were introduced
It is important for programmers to be able to know when new constructs
were introduced, as they may have backwards compatibility needs and
thus need to know to avoid a construct that is too new.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-18 13:49:58 -07:00
H. Peter Anvin
6263a2a4c2 preproc: add %*? and %*??
The %? and %?? tokens are ambiguous when used inside a multi-line
macro. Add tokens %*? and %*?? that only expand during single-macro
expansion.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-18 13:47:59 -07:00
H. Peter Anvin
d76663a637 doc: one more copyright year issue. Add metadata macros to fix.
Yet another place in the documentation where the copyright year comes
in. Instead of having to deal with it manually over and over, add
support for inserting the metadata strings as macros in the output.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-17 19:48:36 -07:00
H. Peter Anvin
2d53846aab doc/nasmdoc.src: update copyright year
Updating the copyright year in the header isn't sufficient. To make it
harder to mess up, move the year metadata tag to the header just below
the copyright statement itself.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-17 19:33:52 -07:00
H. Peter Anvin
66a0dd460c insns.dat: fix accidentally duplicated patterns
Some patterns were accidentally duplicated during the conversion of
the X64 marker.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-17 19:29:37 -07:00
H. Peter Anvin
6c1ad43d5e insns.dat: get rid of the X64 marker (= X86_64,LONG)
The X64 marker for "X86_64,LONG" has turned out to be a problem in
that it is easy to mistake for "long mode" when adding new
instructions, which results in duplicate CPU flags. Kill it off; it
isn't like we will legitimately have new instructions with this
pattern ever again.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-17 19:25:19 -07:00
H. Peter Anvin
8ce4a58b1a rdsrc.pl: allow code paragraphs up to 80 characters long
All the backends support code paragraphs 80+ characters wide (85 for
HTML, 90 for PDF) without overrunning the margins. Avoid the noise.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-17 18:12:34 -07:00
H. Peter Anvin
20be7aaa28 doc/pspdf.pl: remove .setpdfwrite from gs command line
Ghostscript no longer recommends adding the .setpdfwrite operator when
producing PDF; in fact:

.setpdfwrite
    This operator is now deprecated, and its use is discouraged

Presumably it was never actually necessary, so just drop it.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-17 18:02:49 -07:00
H. Peter Anvin
d6b8c53b8c Merge tag 'nasm-2.15.03'
NASM 2.15.03

Resolved Conflicts:
	asm/preproc.c

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-17 17:58:38 -07:00
H. Peter Anvin
d27427846f NASM 2.15.03 nasm-2.15.03 2020-07-17 17:53:37 -07:00
H. Peter Anvin
bed31ce420 Merge pull request #1 from jasperla/sourceforge
Remove references to sourceforge
2020-07-17 17:50:28 -07:00
H. Peter Anvin
ec20417002 changes.src: slighly better description of new instructions
Describe what the new instructions actually are.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-17 17:46:45 -07:00
H. Peter Anvin
1d8c09b24e x86/insns.dat: add tuple type for the latest AVX512 instructions
Add missing tuple type (all are Full - fv:) for the latest AVX512
instructions.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-17 17:44:27 -07:00
H. Peter Anvin
848b1657fd NASM 2.15.03rc8 nasm-2.15.03rc8 2020-07-16 23:13:24 -07:00
H. Peter Anvin
d081f0db5d fp: support bfloat16 constants
Support generating bfloat16 constants. This is a bit awkward, as "DW"
already generates IEEE half precision constants; therefore there is no
longer a single floating-point format for each size. This requires
some replumbing.

Fortunately bfloat16 fits in 64 bits, so support generating them with
a macro that uses __?bfloat16?__() to convert to integers first before
passing them to DW.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 23:11:03 -07:00
H. Peter Anvin
e830e92b77 preproc: when printing errors, don't descent into unlisted macros
If macros are nolisted, *or* they don't have any filename associated
with them, it is absolutely pointless to try to descend into them for
error messages, so just don't, even if -Lb is provided.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 22:50:33 -07:00
H. Peter Anvin
b31a4c9906 Add support for new instructions from ISE June 2020
Add support for new instructions as defined in the Instruction Set
Extensions manual as of June 2020.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 21:52:15 -07:00
H. Peter Anvin
36814f1fc8 autoconf: look for _Decltype as yet another alias for typeof().
If the past is any indication, the final standardization of typeof()
probably will be _Decltype().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 20:28:35 -07:00
H. Peter Anvin (Intel)
271dc7a7f7 NASM 2.15.03rc7 nasm-2.15.03rc7 2020-07-15 16:21:08 -07:00
H. Peter Anvin (Intel)
4c0bd9e736 preproc: BR 2292698: fix handling of whitespace around %+
The previous code to fix whitespace around and multiple %+ symbols in
a row (checkin 122c5fb759) had some
seriously broken pointer handling when zapping tokens. This could
cause paste_tokens() to go into an infinite loop because it would
attach %+ to another token and then immediately break them apart
again, over and over.

Reported-by: <alexfru@gmail.com>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-15 16:16:57 -07:00
H. Peter Anvin (Intel)
64c7c763c2 Change dfmt->debug_macros to dfmt->debug_mmacros
... in preparation for adding dfmt->debug_smacros.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-14 12:05:03 -07:00
H. Peter Anvin (Intel)
ecd4ea94b6 preproc, doc: change a few remaining TOK_ -> TOKEN_ in comments only
A handful of comments still had TOK_ instead of TOKEN_.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-14 11:51:35 -07:00
H. Peter Anvin (Intel)
20e0d616dc preproc: unify token codes between the preprocessor and assembler
The different token codes between the preprocessor and the assembler
is a completely unnecessary headache. Furthermore, lumping all the
operators under TOK_OTHER in the preprocessor causes a whole bunch of
unnecessary headaches.

In combining them, the only tricky part is that PP_CONCAT_MASK() is no
longer usable, as the range of token codes is too large. Replace with
dedicated category masks.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-14 11:50:55 -07:00
H. Peter Anvin (Intel)
1d151a8558 preproc: when parsing a # marker, use C-style string unquoting
To handle escape codes in filename strings after # markers correctly,
we need nasm_unquote() to be aware that it is using C escapes;
otherwise things like "foo`bar" will break.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-13 14:14:28 -07:00
Cyrill Gorcunov
4c3798b7e6 BR 3392696: nasm_quote -- fixup callers
In 41e9682efe we've
changed the nasm_quote arguments still not all callers
were converted which could lead to nil dereference.

[hpa: no need to call strlen() for the asm/preproc.c chunk]

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-12 06:06:02 -07:00
H. Peter Anvin
6a9d1e56c6 Revert "BR 3392696: nasm_quote -- fixup callers"
This reverts commit 6c300aa488.

Will apply a modified version from the nasm-2.15.xx branch instead.
2020-07-12 06:04:48 -07:00
H. Peter Anvin
b9a44fcdf0 autogen.sh: don't rely on sed -r
Not all versions of sed has "sed -r", so change it to use basic
regular expressions. Furthermore, not all systems support \| in basic
regular expressions, to work around it by converting the script names
explicitly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-12 06:03:58 -07:00
H. Peter Anvin
d831915543 preproc: add %is...() function-like macros
Add the first "preprocessor functions". These are simply "magic"
single-line macros with a suitable expansion function. The first
application is functions equal to the %if directives, e.g.
%ifdef blah == %if %isdef(blah) except can be used anywhere (not just
in %if statements like defined() in C.)

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-12 06:03:58 -07:00
Cyrill Gorcunov
f1cf95480d travis: weirdpaste -- add nil dereference test
To address BR 3392696

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2020-07-12 06:01:51 -07:00
Cyrill Gorcunov
65c6ba8716 BR 3392696: nasm_quote -- fixup callers
In 41e9682efe we've
changed the nasm_quote arguments still not all callers
were converted which could lead to nil dereference.

[hpa: no need to call strlen() for the asm/preproc.c chunk]

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-12 06:00:51 -07:00
Cyrill Gorcunov
80e1774b90 travis: weirdpaste -- add nil dereference test
To address BR 3392696

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2020-07-12 14:06:54 +03:00
Cyrill Gorcunov
6c300aa488 BR 3392696: nasm_quote -- fixup callers
In 41e9682efe we've
changed the nasm_quote arguments still not all callers
were converted which could lead to nil dereference.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2020-07-11 19:18:30 +03:00
H. Peter Anvin (Intel)
b14dbb95a1 phash: simplify the code generators
Simplify the code generators by merging the two hash constant arrays
into one. The hash is effectively the same, although the order of the
constants differ (possibly in a way which makes the indexing easier.)
The main difference is the amount of code is necessary to generate
each of the output C files.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 19:26:52 -07:00
H. Peter Anvin (Intel)
10c9aa37a4 preproc: drop preproc_ops
There is only one preprocessor now, so drop the indirection through
preproc_ops.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 19:26:44 -07:00
H. Peter Anvin (Intel)
84cf342e38 asm/phash.pl: remove unused script
This script is redundant with the far more capable
nasmlib/perfhash.pl, which is the one invariably used.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 19:22:29 -07:00
H. Peter Anvin (Intel)
bc5fc72d5b NASM 2.15.03rc6 nasm-2.15.03rc6 2020-07-10 18:46:12 -07:00
H. Peter Anvin (Intel)
d9ea17fb47 preproc: saner handling of cpp-style line directives
NASM now supports a proper superset of cpp line number markers, so
there is no need to hack around them using the
"prepreprocessor". Instead, just put a quick test in do_directive()
treating it just like %line, except convert a "-quoted string into a
`-quoted string.

(This can break if there is a ` or \" sequence in the string... fix
that at some point. This is still much better than what there is now.)

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 18:44:15 -07:00
H. Peter Anvin (Intel)
42a73b776a test/winalign.asm: simple test for COFF alignment
Simple test case based on debugging BR 3392692.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 18:14:54 -07:00
H. Peter Anvin (Intel)
baaa5ca441 outcoff: don't drop align= option alone on a section line
If the section/segment directive *only* contained an align= directive,
it would get lost. Fix that.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 18:14:09 -07:00
H. Peter Anvin (Intel)
bb3156533b ppindirect.asm: make it possible to assemble to a binary
Add a couple of dd/db directives to ppindirect.asm to make it possible
to actually run it through the assembler.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 17:24:43 -07:00
H. Peter Anvin (Intel)
fcd3cb8861 preproc: preserve %[...] in listings
When generating list output, preserve %[...] in the output if we list
a TOK_INDIRECT. The tokenization process removes these deliminators,
so we have to explicitly put them back.

This doesn't affect assembly output, which will only ever be generated
after all TOK_INDIRECT tokens have been removed, but it does affect
some of the listing modes.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 17:22:47 -07:00
H. Peter Anvin (Intel)
a79a700208 preproc: add a %null directive for the masm macro package
Instead of %pragma ignore, use a new %null directive which ignores the
rest of the line, without bothering to expand it.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:55:50 -07:00
H. Peter Anvin (Intel)
015ddc1b33 NASM 2.15.03rc5 nasm-2.15.03rc5 2020-07-10 02:50:51 -07:00
H. Peter Anvin (Intel)
861f2cf269 changes.src: document LEA fix
Document fix of LEA without square brackets.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:49:14 -07:00
H. Peter Anvin (Intel)
be1be3f627 %use masm: much better documentation
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:46:23 -07:00
H. Peter Anvin (Intel)
254a56acca assemble: use proper rel/abs state for lea reg,imm
When using the LEA instruction with immediate syntax instead of memory
operand syntax, the IP_REL flag will not have made it into the operand
type. Make it do so.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:44:33 -07:00
H. Peter Anvin (Intel)
543069acec NASM 2.15.03rc4 nasm-2.15.03rc4 2020-07-10 02:00:31 -07:00
H. Peter Anvin (Intel)
22a3f567c0 changes.src: document %00 fix
Add %00 fix to release note.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 01:59:53 -07:00
H. Peter Anvin (Intel)
b3c5545556 test/Makefile: fix command line for .obj format
The command line for .obj had a stray -F.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 01:54:38 -07:00