Mercurial > repos > blastem
changeset 1469:723f6381cffa
Attempt at fixing issue reported when compiling with MSVC
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 09 Oct 2017 07:48:48 -0700 |
parents | 17c1c30e0d6f |
children | 1e3e0205640f |
files | gen_x86.c |
diffstat | 1 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/gen_x86.c Mon Oct 09 07:42:33 2017 -0700 +++ b/gen_x86.c Mon Oct 09 07:48:48 2017 -0700 @@ -170,6 +170,12 @@ "b", "w", "d", "q" }; +#ifdef X86_64 +#define CHECK_DISP(disp) (disp <= 0x7FFFFFFF && disp >= -2147483648) +#else +#define CHECK_DISP(disp) 1 +#endif + void jmp_nocheck(code_info *code, code_ptr dest) { code_ptr out = code->cur; @@ -179,7 +185,7 @@ *(out++) = disp; } else { disp = dest-(out+5); - if (disp <= 0x7FFFFFFF && disp >= -2147483648) { + if (CHECK_DISP(disp)) { *(out++) = OP_JMP; *(out++) = disp; disp >>= 8; @@ -1917,7 +1923,7 @@ *(out++) = disp; } else { disp = dest-(out+6); - if (disp <= 0x7FFFFFFF && disp >= -2147483648) { + if (CHECK_DISP(disp)) { *(out++) = PRE_2BYTE; *(out++) = OP2_JCC | cc; *(out++) = disp; @@ -1944,7 +1950,7 @@ *(out++) = disp; } else { disp = dest-(out+5); - if (disp <= 0x7FFFFFFF && disp >= -2147483648) { + if (CHECK_DISP(disp)) { *(out++) = OP_JMP; *(out++) = disp; disp >>= 8; @@ -1991,7 +1997,7 @@ check_alloc_code(code, 5); code_ptr out = code->cur; ptrdiff_t disp = fun-(out+5); - if (disp <= 0x7FFFFFFF && disp >= -2147483648) { + if (CHECK_DISP(disp)) { *(out++) = OP_CALL; *(out++) = disp; disp >>= 8; @@ -2029,7 +2035,7 @@ check_alloc_code(code, 5); code_ptr out = code->cur; ptrdiff_t disp = fun-(out+5); - if (disp <= 0x7FFFFFFF && disp >= -2147483648) { + if (CHECK_DISP(disp)) { *(out++) = OP_CALL; *(out++) = disp; disp >>= 8;