diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-05-20 11:43:53 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-05-20 11:43:53 -0700 |
commit | dfb918047b32e57b5cf4840021ccc0c03b4685f9 (patch) | |
tree | a12908c96f5a537ad140df909b621e17df0b1d45 /parser.c | |
parent | 70a13f5a3701faa71bd2b28390dff622d71c62a6 (diff) | |
download | nasm-dfb918047b32e57b5cf4840021ccc0c03b4685f9.tar.gz |
Add DY, YWORD, and the SY instruction flag
Add the DY instruction, YWORD keyword, and an SY marker for
instruction sizes. Add a few more AVX sample instructions.
Diffstat (limited to 'parser.c')
-rw-r--r-- | parser.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -322,6 +322,7 @@ restart_parse: if (result->opcode == I_RESB || result->opcode == I_RESW || result->opcode == I_RESD || result->opcode == I_RESQ || result->opcode == I_REST || result->opcode == I_RESO || + result->opcode == I_RESY || result->opcode == I_EQU || result->opcode == I_INCBIN) { critical = (pass0 < 2 ? 1 : 2); @@ -331,7 +332,7 @@ restart_parse: if (result->opcode == I_DB || result->opcode == I_DW || result->opcode == I_DD || result->opcode == I_DQ || result->opcode == I_DT || result->opcode == I_DO || - result->opcode == I_INCBIN) { + result->opcode == I_DY || result->opcode == I_INCBIN) { extop *eop, **tail = &result->eops, **fixptr; int oper_num = 0; @@ -560,6 +561,11 @@ restart_parse: result->oprs[operand].type |= BITS128; setsize = 1; break; + case S_YWORD: + if (!setsize) + result->oprs[operand].type |= BITS256; + setsize = 1; + break; case S_TO: result->oprs[operand].type |= TO; break; @@ -857,7 +863,7 @@ while (operand < MAX_OPERANDS) result->oprs[operand++].type = 0; /* - * Transform RESW, RESD, RESQ, REST, RESO into RESB. + * Transform RESW, RESD, RESQ, REST, RESO, RESY into RESB. */ switch (result->opcode) { case I_RESW: @@ -880,6 +886,10 @@ while (operand < MAX_OPERANDS) result->opcode = I_RESB; result->oprs[0].offset *= 16; break; + case I_RESY: + result->opcode = I_RESB; + result->oprs[0].offset *= 32; + break; default: break; } |