Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PICを作ろう ,逆アセンブラ(2) ~昼休みにまったり進めるプロジェクト~ (1)

例によって、文字数制限に引っかかるので、一部省略 

//
//  Reverse assembeler of PIC
//  (c)2007 BakaOyaji
//  $Id
//
//
`include "../pic_instructions.h"
`include "../pic_def.h"

module reverse_asm (
    instruction_i
);
input  [(`Instruction_Len-1):0]   instruction_i;

reg [15*8-1:0] str_inst ; //    string to monitor
reg d ;
reg [6:0] f;
reg [2:0] b ;
reg [7:0] k8 ;
reg [10:0] k11 ;

    always@( instruction_i ) begin
        d = instruction_i[7] ;
        f = instruction_i[6:0] ;
        b = instruction_i[9:7] ;
        k8 = instruction_i[7:0] ;
        k11 = instruction_i[10:0] ;
        casex( instruction_i)
            // Byte oriented File Register Operations
            `INST_ADDWF :
                str_inst = { "ADDWF ", hex2(f), ",", hex(d) } ;
            `INST_ANDWF :
                str_inst = { "ANDWF ", hex2(f), ",", hex(d) } ;
            `INST_CLRF   :
                str_inst = { "CLRF ", hex2(f) } ;
            `INST_CLRW  :
                str_inst = "CLRW" ;
            `INST_COMF  :
                str_inst = { "COMF ", hex2(f), ",", hex(d) } ;
            `INST_DECF   :
                str_inst = { "DECF ", hex2(f), ",", hex(d) } ;
            `INST_DECFSZ :
                str_inst = { "DECFSZ ", hex2(f), ",", hex(d) } ;
            `INST_INCF   :
                str_inst = { "INCF ", hex2(f), ",", hex(d) } ;
            `INST_INCFSZ :
                str_inst = { "INCFSZ ", hex2(f), ",", hex(d) } ;
            `INST_IORWF  :
                str_inst = { "IORWF ", hex2(f), ",", hex(d) } ;
            `INST_MOVF   :
                str_inst = { "MOVF ", hex2(f), ",", hex(d) } ;
            `INST_MOVWF  :
                str_inst = { "MOVWF ", hex2(f) } ;
            `INST_NOP  : 
                str_inst = "NOP" ;
            `INST_RLF   :
                str_inst = { "RLF ", hex2(f), ",", hex(d) } ;
            `INST_RRF   :
                str_inst = { "RRF ", hex2(f), ",", hex(d) } ;
            `INST_SUBWF : 
                str_inst = { "SUBWF ", hex2(f), ",", hex(d) } ;
            `INST_SWAPF  :
                str_inst = { "SWAPF ", hex2(f), ",", hex(d) } ;
            `INST_XORWF  :
                str_inst = { "XORF ", hex2(f), ",", hex(d) } ;

            // BIT-Oriented File Register Operations
            `INST_BCF  : 
                str_inst = { "BCF ", hex2(f), ",", hex(b) } ;
            `INST_BSF   :
                str_inst = { "BSF ", hex2(f), ",", hex(b) } ;
            `INST_BTFSC :
                str_inst = { "BTFSC ", hex2(f), ",", hex(b) } ;
            `INST_BTFSS  :
                str_inst = { "BTFSS ", hex2(f), ",", hex(b) } ;

            // Literal and control Operations
                  :
                  :

            default :
                str_inst = "ERROR!" ;
        endcase // casex
    end // always

endmodule //reverse_asm()
// EOF reverse_asem.v

 



コメント

こんにちは


タイトル・・非常に、参考になりました。

またきます。

  • 2007/08/05(日) 07:07:49 |
  • URL |
  • きらり510 #79D/WHSg
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/359-9d6795d5
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。