diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2009-10-13 19:05:31 +0400 |
---|---|---|
committer | Cyrill Gorcunov <gorcunov@gmail.com> | 2009-10-13 19:41:49 +0400 |
commit | 8a6345ca47af16f8657e55282e1c84e4b8e4e96b (patch) | |
tree | ff7afed553fd403466061ed18634ea8cdf976baa /assemble.c | |
parent | 1985416b0ba9e482404b3804977a745c791ab672 (diff) | |
download | nasm-8a6345ca47af16f8657e55282e1c84e4b8e4e96b.tar.gz nasm-8a6345ca47af16f8657e55282e1c84e4b8e4e96b.tar.bz2 nasm-8a6345ca47af16f8657e55282e1c84e4b8e4e96b.zip |
assemble.c: use is_class helper
is_class does not checking flags "strictly". Which means
it may fail if type is specified to REGMEM and you check for
is_class(MEMORY, ...).
Anyway in current patch we check for REGISTER which doesn't
overlap and it is safe to use is_class here.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Diffstat (limited to 'assemble.c')
-rw-r--r-- | assemble.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -2027,7 +2027,7 @@ static enum match_result find_match(const struct itemplate **tempp, * never try to fuzzy-match on them. This also resolves the case * when we have e.g. "xmmrm128" in two different positions. */ - if ((REGISTER & ~instruction->oprs[i].type) == 0) + if (is_class(REGISTER, instruction->oprs[i].type)) continue; /* This tests if xsizeflags[i] has more than one bit set */ @@ -2155,7 +2155,7 @@ static enum match_result matches(const struct itemplate *itemp, ((itemp->opd[i] ^ type) & SIZE_MASK))) { if ((itemp->opd[i] & ~type & ~SIZE_MASK) || (type & SIZE_MASK)) { return MERR_INVALOP; - } else if ((REGISTER & type) != REGISTER) { + } else if (!is_class(REGISTER, type)) { /* * Note: we don't honor extrinsic operand sizes for registers, * so "missing operand size" for a register should be @@ -2224,7 +2224,7 @@ static ea *process_ea(operand * input, ea * output, int bits, /* REX flags for the rfield operand */ output->rex |= rexflags(rfield, rflags, REX_R|REX_P|REX_W|REX_H); - if (!(REGISTER & ~input->type)) { /* register direct */ + if (is_class(REGISTER, input->type)) { /* register direct */ int i; int32_t f; |