mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-11-27 08:10:07 +08:00
bff94fbd39
Work through a number of changes toward making matching a lot saner, both to reduce the number of patterns to generate for APX but also to make a number of code patterns simpler. This replaces a fair number of byte codes. Improve a number of error messages, especially related to overflows. Move process_insn() from nasm.c to assemble.c, as it really is the primary entry point to the assembler module. Reorder some prefixes. In particular, F2/F3 override 66 when used as a mandatory prefix, so it makes more sense for them to be closer to the opcode. Move a lot more information into struct insn. It is better to have it in one place; memory consumption is not an issue because struct insn is transient information. Get rid of "optimization levels" and replace it with a mask of flags. That was already halfway done; complete the job. Replace seg:offset in struct out_data with a struct location. It would be better to extend this to more places, too. The ARx and SMx flags are now explicit bitmasks, instead of having a couple of hard-coded ranges. Add __func__ to assert or panic messages. Because of prefix and message changes, a number of travis tests had to be audited and updated. Fix a number of instruction patterns which had .128 when they ought to be .lig. This is no longer a minor issue with the disassembler: for AVX10, the pattern vector length determines how SAE/RC are encoded, and there is no valid 128-bit encoding. However, with .lig the 512-bit encoding can be used. Separate "o64nw" into two pieces: opsize 64 and "nw" = "REX.w not necessary". The latter can be included in non-64-bit patterns. "o64" still set REX.W since that is still the common thing. New "osz" bytecode: emit an OSP *or* REX.W depending on the current mode and operand size. Useful for special cases like "nop" where "o64 nop" probably wants to be encoded as "48 90". Signed-off-by: H. Peter Anvin <hpa@zytor.com> |
||
---|---|---|
asm | ||
autoconf | ||
common | ||
config | ||
contrib | ||
disasm | ||
doc | ||
headers | ||
include | ||
macros | ||
misc | ||
Mkfiles | ||
nasmlib | ||
nsis | ||
output | ||
perllib | ||
stdlib | ||
test | ||
tools | ||
travis | ||
win | ||
x86 | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
CHANGES | ||
configure.ac | ||
INSTALL | ||
LICENSE | ||
Makefile.in | ||
nasm.spec.in | ||
nasm.spec.sed | ||
nasm.txt | ||
ndisasm.txt | ||
README.md | ||
SubmittingPatches | ||
version | ||
version.pl |
NASM, the Netwide Assembler
Many many developers all over the net respect NASM for what it is: a widespread (thus netwide), portable (thus netwide!), very flexible and mature assembler tool with support for many output formats (thus netwide!!).
Now we have good news for you: NASM is licensed under the "simplified" (2-clause) BSD license. This means its development is open to even wider society of programmers wishing to improve their lovely assembler.
Visit our nasm.us website for more details.
With best regards, the NASM crew.