Frage zu Disassemblinglist

#6589373
Lesenswert?

1
---  C:/Users/Admin/CH8-Demo1.X/mcc_generated_files/interrupt_manager.c  --------------------------------
2

3
            #include "interrupt_manager.h"
4
            #include "mcc.h"
5
                        
6
                       void __interrupt() INTERRUPT_InterruptManager (void)
7

8
    BSF 0x7FE, 0x0
9
    MOVLP 0x0                                            
10
    MOVLB 0xE       // interrupt handler / if(PIE0bits.IOCIE == 1 && PIR0bits.IOCIF == 1)
11
    BTFSS PIE0, 0x4
12
    GOTO 0xA
13
    GOTO 0xB
14
    GOTO 0x1D
15
    BTFSS PIR0, 0x4
16
    GOTO 0xE
17
    GOTO 0xF
18
    GOTO 0x1D           
19
    MOVLB 0x0      // if(IO_RA3_GetValue())
20
    BTFSS PORTA, 0x3
21
    GOTO 0x13
22
    GOTO 0x14
23
    GOTO 0x17      
24
    BSF LATD, 0x2    // IO_RD2_SetHigh();
25
    GOTO 0x19
26
    GOTO 0x19                
27
    BCF LATD, 0x2    // IO_RD2_SetLow();
28
    GOTO 0x19                          
29
    MOVLB 0x3E       // IOCAFbits.IOCAF0 = 0;
30
    BCF IOCAF, 0x0              
31
    GOTO 0x1D                   // else
32
    GOTO 0x1D
33
    BCF 0x1F7E, 0x0
34
    RETFIE

Hallochen,

Dieser Code hier war in der Dissassembling, ich will hier nur wissen 
wohin diese GOTO´s gehen?
Hexadezimal stimmen sie jedenfalls nicht mit den Registern in den Bänken 
überein!Welches Register wird hier vom GOTO angepeilt?
(Firma: egal) #6589698
Lesenswert?

Rudi R. schrieb:
> Dieser Code hier war in der Dissassembling, ich will hier nur wissen
> wohin diese GOTO´s gehen?
Bist du dir sicher, dass das wirklich ein Dissassembling von einem 
Programm ist?
Was soll denn das für eine merkwürdiger Prozessor sein? ich habe noch 
keine asm- Mnemonik gesehen wo es ein "goto" gibt, die heißen eigentlich 
fast immer jump oder so ähnlich?

Für mich sieht das ganze irgendwie mehr nach einem assembler listing aus 
das als Zwischencode von einem c-compiler erzeugt wurde. Da dürfte es 
sich um einen fiktiven Sprungbefehl zu fiktiver Adresse innerhalb dieser 
Datei handeln (also die erste Zeile ist quasi Adresse 0x00 usw.) Diese 
werden dann später vom linker in echte jumps umgerechnet, wenn er die 
ganzen Dateien zu einem Ergebnis zusammenfügt.
Gast #6589742
Lesenswert?

Das ist irgendein PIC.  Da gibt's GOTO und die Condition-Tests skippen 
die nächste Instruktion oder nicht, ein "BTFSS GOTO GOTO" ist nichts 
anderes als ein if-then-else.    Merkwürdig sieht der Code aber schon 
aus - automatisch generiert ohne auch nur ein fitzelchen Optimierung.

Der Parameter vom GOTO ist an sich direkt die Zieladresse.  Adressen 
sind in dem Listing aber nicht zu sehen ...
#6591512
Lesenswert?

Irgend W. schrieb:
> Für mich sieht das ganze irgendwie mehr nach einem assembler listing aus
> das als Zwischencode von einem c-compiler erzeugt wurde. Da dürfte es
> sich um einen fiktiven Sprungbefehl zu fiktiver Adresse innerhalb dieser
> Datei handeln (also die erste Zeile ist quasi Adresse 0x00 usw.) Diese
> werden dann später vom linker in echte jumps umgerechnet, wenn er die
> ganzen Dateien zu einem Ergebnis zusammenfügt.

Ja,das ist doch eine Disassebling!?

Haben sie vielleicht mal eine Disassembling von Ihnen?
Würde mich mal interessieren, wie das richtiger weise aussehen müsste.
Das Programm dazu funktioniert aber in meinem Fall!...

Ich will es halt versuchen nachzuvollziehen, was da passiert, weil mir 
das Codegewusel da zu lang und uneffizient erscheint.

Also kann man sich die Sprünge da auch wegdenken, weil sie nur der 
Zusammenführung vom Linker dienen??

Danke;o)
#6591520
Lesenswert?

michael_ schrieb:
> Und mehrere GOTO hintereinander machen gar keinen Sinn.
> Bitte das nächste Salami-Scheibchen.

Zumindest ein Goto könnte übersprungen werden, wenn ein entsprechender 
Sprungbefehl davor liegt.

Ähm,ich bin noch neu in diesem Gebiet, vielleicht gibt es sowas?
Garade das fand ich ja auch so eigenartig...also das Programm dazu 
funktioniert jedenfalls.:)
#6845636
Lesenswert?

Rudi R. schrieb:
> Dieser Code hier war in der Dissassembling, ich will hier nur wissen
> wohin diese GOTO´s gehen?

Sieht aus wie der vom XC8 in der FREE Version generierte Code ohne jede 
Optimierung. Wenn man sich nicht die Dateien, sondern den 
Programmspeicher in der IDE anschaut, dann sieht man auch noch, an 
welcher Adresse die Befehle stehen und damit auch wohin die GOTOs 
springen.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren