Портал освітньо-інформаційних послуг «Студентська консультація»

  
Телефон +3 8(066) 185-39-18
Телефон +3 8(093) 202-63-01
 (093) 202-63-01
 studscon@gmail.com
 facebook.com/studcons

<script>

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 

  ga('create', 'UA-53007750-1', 'auto');

  ga('send', 'pageview');

 

</script>

Дизасемблювання TPU, TPP, TPW модулів, написаних на Паскалі

Тип роботи: 
Курсова робота
К-сть сторінок: 
82
Мова: 
Українська
Оцінка: 

list_ptr;

  current : list_ptr;
  obj : obj_ptr;
  type_obj : type_def_ptr;
  no_name : string;
  save_in_array : boolean;
  bt:byte;
begin
  with def^ do
  begin
    if base_type in [1,2,4,6,8,$a,$e,$f,$10,$11,$12,$13,$15,$18,$19,$1a,$1b,
                     $21,$22,$23] then
    begin
      bt:=255;
      case base_type of
        1 : begin write('untyped');  bt:=0    end;
        2 : begin write('shortint'); bt:=12;  end;
        4 : begin write('integer');  bt:=12;  end;
        6 : begin write('longint');  bt:=12;  end;
        8 : begin write('byte');     bt:=12;  end;
       $a : begin write('word');     bt:=12;  end;
       $e : begin write('single');   bt:=10;  end;
       $f : begin write('double');   bt:=10;  end;
      $10 : begin write('extended'); bt:=10;  end;
      $11 : begin write('real');     bt:=11;  end;
      $12 : begin write('boolean');  bt:=13;  end;
      $13 : begin write('char');     bt:=14;  end;
      $15 : begin write('comp');     bt:=10;  end;
      $18 : begin write('text');     bt:=5;   end;
      $19 : begin write('file');     bt:=4;   end;
      $1a : begin write('pointer');  bt:=8;   end;
      $1b : begin write('string');   bt:=9;   end;
      { TPW types }
      $21 : begin write('wordbool'); bt:=13;  end;
      $22 : begin write('longbool'); bt:=13;  end;
      $23 : begin write('pchar');    bt:=8;   end;
      end;
      if type_type<>bt then
        Write('{base type <-> type_type error}');
    end
    else
    begin
      if base_type <> 0 then
        WriteError('{ unrecognized base type '+hexbyte(base_type)+'}');
      case type_type of
        0 : write('untyped');
        1 : begin                  {Array}
              write('array[');
              write_var_type(index_unit,index_ofs);
              write('] of ');
              write_var_type(element_unit,element_ofs);
            end;
        2 : begin                  {Record}
              save_kind := last_kind;
              last_kind := record_id;
              writeln ('Record ');
 
              build_list(field_list,buffer,add_only_offset(buffer,hash_ofs));
 
              current := field_list;
              inc(indentation,2);
              while current^.offset < $ffff do
              begin
                obj := add_only_offset(buffer,current^.offset);
                print_obj(obj);
                current := current^.next;
              end;
              dec(indentation);
              indent;
              dec(indentation);
              write('end');
              last_kind := save_kind;
            end;
 
        3 : begin                  {Object}
              save_kind := last_kind;
              last_kind := object_id;
              write ('Object');
              if parent_unit <> 0 then
              begin
                write('(');
                write_var_type(parent_unit,parent_ofs);
                write(')');
              end;
              write(tab,'{ vmt block ',hexword(handle));
              if w10 <> 0 then
                write(' w10=',hexword(w10));
         
Фото Капча