mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-02-23 17:29:23 +08:00
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> |
||
---|---|---|
.. | ||
codeview.c | ||
dwarf.h | ||
elf.h | ||
legacy.c | ||
macho.h | ||
nulldbg.c | ||
nullout.c | ||
outaout.c | ||
outaout.mac | ||
outas86.c | ||
outas86.mac | ||
outbin.c | ||
outbin.mac | ||
outcoff.c | ||
outcoff.mac | ||
outdbg.c | ||
outdbg.mac | ||
outelf.c | ||
outelf.h | ||
outelf.mac | ||
outform.c | ||
outform.h | ||
outieee.c | ||
outlib.c | ||
outlib.h | ||
outmacho.c | ||
outmacho.mac | ||
outobj.c | ||
outobj.mac | ||
pecoff.h | ||
stabs.h |