コード例 #1
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void js_sub(FILE *f)
  {
  int par1;
  char *c;
  int d;

  c=malloc(65536);
  d=getc(f);while (d!=EOF && d!='$') d=getc(f);
  fgets(c,65536,f);
  if (sub_mode)
     {
     add_short(142);
     get_cislo(f,&par1);
     if (par1>0) add_short(par1);else add_short(32767+par1-basic_num);
     add_string(c);
     }
  else
     {
     add_short(148);
     add_string(c);
     get_cislo(f,&par1);
     if (par1>0) standard_jump=par1;else standard_jump=32767+par1-basic_num;
     }
  free(c);
  }
コード例 #2
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void js_first(FILE *f)
  {
  int parm1;


  add_short(166);
  add_short(last_pgf);
  add_short(140);
  get_cislo(f,&parm1);
  add_short(parm1);
  }
コード例 #3
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void add_else()
  {
  int psave,c;
  get_command(f,&c);
  if (c!=-2) error("Chybn� syntaxe p�kazu else. O�ek�v� se '{'");
  was_sub=0;
  if (get_last_level()!=open_level) error("Else bez if");
  add_short(171);
  psave=prog_pos;
  add_short(0);
  pop_and_fill(prog_pos,open_level);
  push_level(open_level,psave);
  open_level++;
  }
コード例 #4
0
ファイル: add.c プロジェクト: mewbak/decompiler-1
int main (void)
{
  x = add_int (1, 2);
  x = add_short (3, 4);
  x = add_ushort (5, 6);
  x = add_unsigned (7, 8);
  return 0;
}
コード例 #5
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void add_if_jump()
  {
  char c=1;
  switch(iff_mode)
     {
     case IF_NOT_JUMP:add_short(169);break;
     case IF_JUMP:add_short(170);break;
     case IF_ELSE:c=0;break;
     }
  if (c)
     {
     push_level(open_level,prog_pos);
     add_short(0);
     }
  iff_mode=0;
  was_sub=0;
  }
コード例 #6
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void js_dialoge(FILE *f)
  {
  int parm1;
  T_PARAGRAPH pgf;

  if (!b_closed) error("Ocekava se '}' (close_block)");
  get_cislo(f,&parm1);
  abs_num=basic_num=parm1*128;
  pgf.num=basic_num;
  pgf.alt=basic_num;
  last_dialoge=pgf_count;
  last_pgf=0;
  add_pgf(&pgf);
  get_command(f,&parm1);
  if (parm1!=-2) error ("Ocekava se '{' (open_block)");
  sentence=0;
  b_closed=0;
  add_short(167);
  add_short(basic_num);
  }
コード例 #7
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void pop_and_fill(int pos,int level)
  {
  int i;
  int prog_sav;
  prog_sav=prog_pos;
  while (if_ptr && if_data[if_ptr-1].level==level)
     {
     if_ptr--;
     prog_pos=if_data[if_ptr].pointer;
     i=pos-if_data[if_ptr].pointer-3;
     if (i>32767 || i<-32767) error("Blok if/else je priliz dlouhy (delsi nez 32767 bytu)");
     add_short(i);
     }
  prog_pos=prog_sav;
  }
コード例 #8
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void copy_short(FILE *f)
  {
  int c;
  int i;
  c=fgetc(f);
  if (c=='&')
    {
    get_cislo(f,&i);
    add_var(i);
    }
  else
    {
    if (isdigit(c)) ungetc(c,f);
    get_cislo(f,&i);
    add_short(i);
    }
  }
コード例 #9
0
int breakpoint_Relocation::pack_data() {
  short* p = data();

  assert(p == &live_bits(), "initializing live_bits");
  *p++ = _bits;

  jint target_bits = (jint) internal() ? scaled_offset           (_target)
				: runtime_address_to_index(_target);
  if (settable()) {
    // save space for set_target later
    add_long(p, target_bits);
  } else {
    add_int (p, target_bits);
  }

  for (int i = 0; i < instrlen(); i++) {
    add_short(p, (short)0x7777);    // placeholder value until bytes can be saved
  }

  return p - data();
}
コード例 #10
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void js_close_block()
  {
  if (open_level)
     {
     if (was_sub)
        if (sub_mode)
           add_short(165);
        else
           {
           add_short(139);
           add_short(standard_jump);
           }
     sub_mode=0;
     open_level--;
     return;
     }
  if (b_closed) error("Neocekavany znak '}' (close_block)");
  if (sentence && sub_mode) add_short(165);else
     {
     add_short(139);
     add_short(standard_jump);
     }
     b_closed=1;
  }
コード例 #11
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void decode_program(FILE *f)
  {
  int c;
  char next_sub=0;
  char *d;

  d=(char *)calloc(sizeof(char),16384);
  open_level=0;
  c=fgetc(f);
  while (c!=EOF)
     {
     if (c=='!')
        {
        char d[256];

        fgets(&d,256,f);
        decode_pgf1(d);
        }
     else if (isdigit(c) || c=='-')
        {
        int cislo;
        ungetc(c,f);
        get_cislo(f,&cislo);
        add_short(cislo);
        }
     else if (c=='*')
        {
        int cislo;
        get_cislo(f,&cislo);
        if (cislo!=517 && next_sub)
           {
           js_close_sub();
           next_sub=0;
           }
        if (cislo!=171 && !iff_mode) pop_and_fill(prog_pos,open_level);
        switch (cislo)
           {
           case 512:js_dialoge(f);break; //Sekce DIALOG
           case 513:js_first(f);break;   //Prikaz FIRST
           case 514:add_short(152);  //Prikaz WHEN_ITEM
                    copy_short(f);
                    add_short(140);
                    get_cislo(f,&cislo);
                    if (cislo>0)add_short(cislo);else add_short(cislo+32767-basic_num);
                    break;
           case 515:add_short(163); //prikaz WHEN_FLAG
                    copy_short(f);
                    add_short(140);
                    get_cislo(f,&cislo);
                    if (cislo>0)add_short(cislo);else add_short(cislo+32767-basic_num);
                    break;
           case 516:js_standard(f);break; //prikaz STANDARD
           case 517:js_sub(f);next_sub=1;break; //prikaz SUB
           case 520:js_sentence(f);break;   //Sekce SENTENCE
           case -1:js_close_block();break; //znak }//
           case -2: if (iff_mode) add_if_jump();else error("Neocekavany znak '{' (open_block)");
                    open_level++;
                    break; //znak {//
           case 999:save_pgf_name(f);break;
           case 169:if (iff_mode) add_if_jump(); //prikaz if
                    iff_mode=IF_NOT_JUMP;break;
           case 170:if (iff_mode!=IF_NOT_JUMP) error("NOT bez IF"); //modifikator not
                    iff_mode=IF_JUMP;break;
           case 171:if (iff_mode) error("Chybn� pou�it� p�kazu ELSE"); //prikaz else
                    add_else();break;
           case 173:set_alternative(f);break;
           default: add_short(cislo);break;
           }
        }
     else if (c=='$')
        {
        fgets(d,16384,f);
        add_string(d);
        }
     else if (c=='&')
        {
        int cislo;
        get_cislo(f,&cislo);
        add_var(cislo);
        }
     c=fgetc(f);
     }
  free(d);
  }
コード例 #12
0
ファイル: CDIALOGY.C プロジェクト: svn2github/Brany_Skeldalu
void js_close_sub()
  {
  was_sub=1;
  if (sub_mode)add_short(164); else add_short(144);
  }