From c24cab6d1d1735fc305712a4e95996c10023b45d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ni=C3=B1o=20D=C3=ADaz?= Date: Sun, 31 Dec 2017 13:09:08 +0100 Subject: [PATCH] Use NOT operator to complement bits instead of XOR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous way of doing it relied on the variable being 32-bit wide. Signed-off-by: Antonio Niño Díaz --- src/asm/asmy.y | 2 +- src/asm/rpn.c | 2 +- src/link/patch.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/asm/asmy.y b/src/asm/asmy.y index cac9b637..d9159dbb 100644 --- a/src/asm/asmy.y +++ b/src/asm/asmy.y @@ -1220,7 +1220,7 @@ const : T_ID { $$ = sym_GetConstantValue($1); } } | T_OP_ADD const %prec NEG { $$ = +$2; } | T_OP_SUB const %prec NEG { $$ = -$2; } - | T_OP_NOT const %prec NEG { $$ = 0xFFFFFFFF^$2; } + | T_OP_NOT const %prec NEG { $$ = ~$2; } | T_OP_ROUND '(' const ')' { $$ = math_Round($3); } | T_OP_CEIL '(' const ')' { $$ = math_Ceil($3); } | T_OP_FLOOR '(' const ')' { $$ = math_Floor($3); } diff --git a/src/asm/rpn.c b/src/asm/rpn.c index a2e34b35..0bf4fb65 100644 --- a/src/asm/rpn.c +++ b/src/asm/rpn.c @@ -362,6 +362,6 @@ void rpn_UNNOT(struct Expression * expr, struct Expression * src) { *expr = *src; - expr->nVal = expr->nVal ^ 0xFFFFFFFF; + expr->nVal = ~expr->nVal; pushbyte(expr, RPN_UNNOT); } diff --git a/src/link/patch.c b/src/link/patch.c index 6e70876b..8ab17c73 100644 --- a/src/link/patch.c +++ b/src/link/patch.c @@ -128,7 +128,7 @@ calcrpn(struct sPatch * pPatch) rpnpush(rpnpop() ^ rpnpop()); break; case RPN_UNNOT: - rpnpush(rpnpop() ^ 0xFFFFFFFF); + rpnpush(~rpnpop()); break; case RPN_LOGAND: rpnpush(rpnpop() && rpnpop());