Forum: Mikrocontroller und Digitale Elektronik Suche Disassembler für PIC16F877


von Jens (Gast)


Lesenswert?

Hi,

ich suche einen guten Disassembler für den o.g. PIC. Ich habe hier zwar 
einen von Norbert Hageman V1.6 welcher wirklich toll funktioniert. Er 
nimmt die Hex aus MPLAB, steuert Confbits, ID, RAM Label etc. richtig 
toll ein, das sieht dann wirklich gut aus, aber was nicht geht ist das 
Labeling in Abhängigkeit der Bits:

PCLATH,3 und 4.

Vielleicht ist das auch ein wenig viel verlangt, aber er Labelt wohl 
nicht richtig...

es sind oft solche Ausdrücke zu sehen:

    BSF PCLATH,4         ; !!Bank Program-Page-Select
    BSF PCLATH,3         ; !!Bank Program-Page-Select
    CALL LADR_0x0107     ; !!Bank!! 0x0107 - 0x0907 - 0x1107 - 0x1907
    BCF PCLATH,4         ; !!Bank Program-Page-Select
    BCF PCLATH,3         ; !!Bank Program-Page-Select


    BSF PCLATH,4         ; !!Bank Program-Page-Select
    BCF PCLATH,3         ; !!Bank Program-Page-Select
    CALL LADR_0x0001     ; !!Bank!! 0x0001 - 0x0801 - 0x1001 - 0x1801
    BCF PCLATH,4         ; !!Bank Program-Page-Select
    BCF PCLATH,3         ; !!Bank Program-Page-Select


Naja, jedenfalls ist es auch so wenn ich es dann wieder assembliere 
passt es nicht mehr in den Controller...

Ich betreibe hier gerade etwas Forschung an Codeschnipseln...

Kann man soetwas überhaupt "richtig" disassemblen?

JJ

von Anja (Gast)


Lesenswert?

Jens schrieb:
> Naja, jedenfalls ist es auch so wenn ich es dann wieder assembliere
> passt es nicht mehr in den Controller...

Märchenstunde?
oder ist der Prozessortyp nicht richtig eingestellt?
Oder interpretiert der Assembler einige Zeilen als MACRO?

Jens schrieb:
> Kann man soetwas überhaupt "richtig" disassemblen?
Meistens braucht man etwas Nachbearbeitung.

Jens schrieb:
> es sind oft solche Ausdrücke zu sehen:

Deutet auf einen schlecht optimierenden Compiler hin.
Ein guter Assembler Programmierer würde den code so anordnen daß 
möglichst wenig Pagewechsel erforderlich sind.

>
>     BSF PCLATH,4         ; !!Bank Program-Page-Select
>     BSF PCLATH,3         ; !!Bank Program-Page-Select
>     CALL LADR_0x0107     ; !!Bank!! 0x0107 - 0x0907 - 0x1107 - 0x1907
>     BCF PCLATH,4         ; !!Bank Program-Page-Select
>     BCF PCLATH,3         ; !!Bank Program-Page-Select


ein guter Disassembler würde folgendes daraus machen:
      pagesel   LADR_0x1107
      CALL      LADR_0x1107
      pagesel   $

allerdings hat Microchip das pagesel-Macro im Laufe der Zeit umgestellt.
(war früher "movlw high (LADR_0x1107)" + "movwf pclath" )

Gruß Anja

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.