From 2dea8f4d6b6df76ecba33051a417cb05e4cb6a02 Mon Sep 17 00:00:00 2001 From: Marcus Comstedt <marcus@mc.pp.se> Date: Thu, 16 Aug 2001 20:49:47 +0200 Subject: [PATCH] Changes to enable INS_F_JUMP to just custom encoding of offsets. Rev: src/code/ia32.c:1.16 Rev: src/code/ia32.h:1.13 Rev: src/peep.c:1.69 --- src/code/ia32.c | 7 ++++++- src/code/ia32.h | 5 +++-- src/peep.c | 7 +++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/code/ia32.c b/src/code/ia32.c index 3f55b76e0e..dc2b4ffaa4 100644 --- a/src/code/ia32.c +++ b/src/code/ia32.c @@ -1,5 +1,5 @@ /* - * $Id: ia32.c,v 1.15 2001/08/13 23:39:10 mast Exp $ + * $Id: ia32.c,v 1.16 2001/08/16 18:49:46 marcus Exp $ * * Machine code generator for IA32. * @@ -291,6 +291,11 @@ void update_f_jump(INT32 offset, INT32 to_offset) upd_pointer(offset, to_offset - offset - 4); } +INT32 read_f_jump(INT32 offset) +{ + return read_pointer(offset) + offset + 4; +} + void ia32_push_int(INT32 x) { struct svalue tmp; diff --git a/src/code/ia32.h b/src/code/ia32.h index e4fe227635..e03b7761e0 100644 --- a/src/code/ia32.h +++ b/src/code/ia32.h @@ -1,5 +1,5 @@ /* - * $Id: ia32.h,v 1.12 2001/08/13 23:39:10 mast Exp $ + * $Id: ia32.h,v 1.13 2001/08/16 18:49:47 marcus Exp $ */ #define PIKE_OPCODE_T unsigned INT8 @@ -118,10 +118,11 @@ void ia32_decode_program(struct program *p); INT32 ins_f_jump(unsigned int b); void update_f_jump(INT32 offset, INT32 to_offset); +INT32 read_f_jump(INT32 offset); #define INS_F_JUMP ins_f_jump #define UPDATE_F_JUMP update_f_jump - +#define READ_F_JUMP read_f_jump void ia32_flush_code_generator(void); #define FLUSH_CODE_GENERATOR_STATE ia32_flush_code_generator diff --git a/src/peep.c b/src/peep.c index 939fe45a42..0d510cf949 100644 --- a/src/peep.c +++ b/src/peep.c @@ -19,7 +19,7 @@ #include "interpret.h" #include "pikecode.h" -RCSID("$Id: peep.c,v 1.68 2001/08/15 16:40:47 marcus Exp $"); +RCSID("$Id: peep.c,v 1.69 2001/08/16 18:49:46 marcus Exp $"); static void asm_opt(void); @@ -138,7 +138,6 @@ void update_arg(int instr,INT32 arg) #define FLUSH_CODE_GENERATOR_STATE() #endif - /**** Bytecode Generator *****/ void assemble(void) @@ -328,7 +327,7 @@ void assemble(void) tmp=INS_F_JUMP(c->opcode); if(tmp != -1) { - upd_pointer(tmp, jumps[c->arg]); + UPDATE_F_JUMP(tmp, jumps[c->arg]); jumps[c->arg]=~tmp; break; } @@ -407,7 +406,7 @@ void assemble(void) #ifdef INS_F_JUMP if(jumps[e] < 0) { - tmp = read_pointer(~jumps[e]); + tmp = READ_F_JUMP(~jumps[e]); UPDATE_F_JUMP(~jumps[e], tmp2); jumps[e]=tmp; continue; -- GitLab