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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.