And now for the new recompiler.
This commit is contained in:
@@ -32,7 +32,7 @@ static inline void call(codeblock_t *block, uintptr_t func)
|
||||
codegen_alloc_bytes(block, 5);
|
||||
diff = func - (uintptr_t)&block_write_data[block_pos + 5];
|
||||
|
||||
if (diff >= -0x80000000 && diff < 0x7fffffff)
|
||||
if (diff >= -0x80000000ULL && diff < 0x7fffffffULL)
|
||||
{
|
||||
codegen_addbyte(block, 0xE8); /*CALL*/
|
||||
codegen_addlong(block, (uint32_t)diff);
|
||||
@@ -53,7 +53,7 @@ static inline void jmp(codeblock_t *block, uintptr_t func)
|
||||
codegen_alloc_bytes(block, 5);
|
||||
diff = func - (uintptr_t)&block_write_data[block_pos + 5];
|
||||
|
||||
if (diff >= -0x80000000 && diff < 0x7fffffff)
|
||||
if (diff >= -0x80000000ULL && diff < 0x7fffffffULL)
|
||||
{
|
||||
codegen_addbyte(block, 0xe9); /*JMP*/
|
||||
codegen_addlong(block, (uint32_t)diff);
|
||||
|
||||
@@ -512,7 +512,7 @@ void codegen_reg_write_imm(codeblock_t *block, ir_reg_t ir_reg, uint32_t imm_dat
|
||||
|
||||
case REG_DWORD:
|
||||
if ((uintptr_t)p < 256)
|
||||
codegen_direct_write_32_imm_stack(block, (int)p, imm_data);
|
||||
codegen_direct_write_32_imm_stack(block, (int)(intptr_t)p, imm_data);
|
||||
else
|
||||
codegen_direct_write_32_imm(block, p, imm_data);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user