1998-01-13
1998-01-13 23:01:47 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>
-
b1f4eb39528f16bb6a6f876e2458255e588283a1
(25 lines)
(+13/-12)
[
Show
| Annotate
]
Branch: 7.9
Compiler update to use two pass
Rev: src/acconfig.h:1.14
Rev: src/builtin_functions.c:1.59
Rev: src/builtin_functions.h:1.5
Rev: src/compilation.h:1.4
Rev: src/configure.in:1.149
Rev: src/cpp.c:1.3
Rev: src/docode.c:1.24
Rev: src/docode.h:1.4
Rev: src/gc.c:1.24
Rev: src/interpret.c:1.57
Rev: src/interpret.h:1.16
Rev: src/language.yacc:1.51
Rev: src/las.c:1.40
Rev: src/las.h:1.9
Rev: src/lex.c:1.37
Rev: src/lex.h:1.7
Rev: src/main.c:1.32
Rev: src/modules/Image/blit.c:1.26
Rev: src/modules/Image/colortable.c:1.33
Rev: src/modules/Image/dct.c:1.11
Rev: src/modules/Image/image.c:1.73
Rev: src/modules/Image/matrix.c:1.13
Rev: src/modules/Image/operator.c:1.11
Rev: src/modules/Image/pattern.c:1.11
Rev: src/modules/Image/pnm.c:1.9
Rev: src/modules/Image/polyfill.c:1.18
Rev: src/modules/Image/togif.c:1.29
Rev: src/modules/Image/x.c:1.17
Rev: src/modules/Pipe/pipe.c:1.15
Rev: src/modules/Regexp/glue.c:1.9
Rev: src/modules/_Crypto/cbc.c:1.10
Rev: src/modules/_Crypto/crypto.c:1.24
Rev: src/modules/_Crypto/des.c:1.11
Rev: src/modules/_Crypto/pipe.c:1.11
Rev: src/modules/_Crypto/sha.c:1.9
Rev: src/modules/files/socktest.pike:1.6
Rev: src/modules/system/system.c:1.37
Rev: src/object.c:1.31
Rev: src/object.h:1.13
Rev: src/opcodes.c:1.10
Rev: src/operators.c:1.22
Rev: src/peep.c:1.16
Rev: src/peep.in:1.9
Rev: src/pike_types.c:1.27
Rev: src/pike_types.h:1.6
Rev: src/program.c:1.48
Rev: src/program.h:1.24
Rev: src/program_areas.h:1.2
Rev: src/stralloc.c:1.21
Rev: src/stralloc.h:1.10
Rev: src/svalue.c:1.18
Rev: src/testsuite.in:1.64
Rev: src/threads.c:1.51
Rev: src/threads.h:1.26
111: Inside #if defined(DEBUG)
if(b>255)
error("Instruction too big %d\n",b);
#endif
- ins_byte((unsigned char)b,A_PROGRAM);
+ add_to_program((unsigned char)b);
}
static void ins_f_byte_with_arg(unsigned int a,unsigned INT32 b)
127:
if( b < 256*256)
{
ins_f_byte(F_PREFIX_CHARX256);
- ins_byte(b>>8, A_PROGRAM);
+ add_to_program(b>>8);
}else if(b < 256*256*256) {
ins_f_byte(F_PREFIX_WORDX256);
- ins_byte(b >> 16, A_PROGRAM);
- ins_byte(b >> 8, A_PROGRAM);
+ add_to_program(b>>16);
+ add_to_program(b>>8);
}else{
ins_f_byte(F_PREFIX_24BITX256);
- ins_byte(b >> 24, A_PROGRAM);
- ins_byte(b >> 16, A_PROGRAM);
- ins_byte(b >> 8, A_PROGRAM);
+ add_to_program(b>>24);
+ add_to_program(b>>16);
+ add_to_program(b>>8);
}
}
ins_f_byte(a);
- ins_byte(b, A_PROGRAM);
+ add_to_program(b);
}
void assemble(void)
248:
{
case F_NOP: break;
case F_ALIGN:
- while(PC % c->arg) ins_byte(0, A_PROGRAM);
+ while(PC % c->arg) add_to_program(0);
break;
case F_BYTE:
- ins_byte(c->arg, A_PROGRAM);
+ add_to_program(c->arg);
break;
case F_LABEL:
276:
if(c->arg > max_label || c->arg < 0) fatal("Jump to unknown label?\n");
#endif
tmp=PC;
- ins_int(jumps[c->arg],A_PROGRAM);
+ ins_int(jumps[c->arg], (void(*)(char))add_to_program);
jumps[c->arg]=tmp;
break;
352:
p->opcode=f;
p->line=cl;
- copy_shared_string(p->file, current_file);
+ copy_shared_string(p->file, lex.current_file);
p->arg=b;
return p - (p_instr *)instrbuf.s.str;