diff options
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; } |