mikrocontroller.net

Forum: PC-Programmierung Wieviele MIPS


Autor: Mc Coy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

Kann man definitiv sagen wieviele MIPS ein Aufruf von zum Beispiel:
a=25;
benötigt? Oder vieleicht eine if Abfrage:
if ((Pixel[y][x]==1) && (h==0)) LATD |= (1<<y);

Ich programmiere in C18. Gibt es vielleciht auch die Möglichkeit, dass 
einem der Compiler die entsprechenden MIPS mitteilt?

Gruß
McCoy

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du weisst schon für was MIPS steht? Eine Anweisung hat allerhöchstens 
eine gewisse Anzahl Millionen Instruktionen, aber sicher nicht noch pro 
Sekunde.

Autor: Reinhard R. (reirawb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MIPS - Million Instructions Per Second - Ist ein prozessortypischer 
Wert, der auch von der verwendeten Taktfrequenz abhängt.
http://de.wikipedia.org/wiki/Instruktionen_pro_Sekunde
Den kannst Du nicht auf eine Instruktion beziehen.

Wenn Du aber wissen willst, wie viele Takte Deine Instruktion auf dem 
Prozessor benötigt, dann kannst Du Dir z.B. den übersetzten 
Assemblercode ansehen und die Takte für die einzelnen Befehle 
zusammenaddieren. Wird u.U. bei Schleifen schwierig.

Reinhard

Autor: Mc Coy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mir grad den Assembler Code angeschaut. Demzufolge benötigt die 
if Abfrage 59 Takte, sehe ich das richtig? Ich hab inAssembler wirklich 
0 Ahnung, deshalb die Frage: wozu sind die ganzen NOP da? Und wieweit 
könnte man den Code evtl. noch schrumpfen?



112:   if ((Pixel[y][x]==1) && (h==0)) LATD |= (1<<y);
  0710    0E04     MOVLW 0x4
  0712    CFDB     MOVFF 0xfdb, 0x14
  0714    F014     NOP
  0716    0E05     MOVLW 0x5
  0718    CFDB     MOVFF 0xfdb, 0x15
  071A    F015     NOP
  071C    0E16     MOVLW 0x16
  071E    0215     MULWF 0x15, ACCESS
  0720    CFF3     MOVFF 0xff3, 0x15
  0722    F015     NOP
  0724    0214     MULWF 0x14, ACCESS
  0726    CFF3     MOVFF 0xff3, 0x14
  0728    F014     NOP
  072A    50F4     MOVF 0xff4, W, ACCESS
  072C    2615     ADDWF 0x15, F, ACCESS
  072E    0E00     MOVLW 0
  0730    2614     ADDWF 0x14, F, ACCESS
  0732    0E01     MOVLW 0x1
  0734    2215     ADDWFC 0x15, F, ACCESS
  0736    0E02     MOVLW 0x2
  0738    6E08     MOVWF 0x8, ACCESS
  073A    6A09     CLRF 0x9, ACCESS
  073C    CFDB     MOVFF 0xfdb, 0xd
  073E    F00D     NOP
  0740    0E03     MOVLW 0x3
  0742    CFDB     MOVFF 0xfdb, 0xe
  0744    F00E     NOP
  0746    EC17     CALL 0xa2e, 0
  0748    F005     NOP
  074A    5014     MOVF 0x14, W, ACCESS
  074C    2406     ADDWF 0x6, W, ACCESS
  074E    6EE9     MOVWF 0xfe9, ACCESS
  0750    5015     MOVF 0x15, W, ACCESS
  0752    2007     ADDWFC 0x7, W, ACCESS
  0754    6EEA     MOVWF 0xfea, ACCESS
  0756    0E01     MOVLW 0x1
  0758    18EE     XORWF 0xfee, W, ACCESS
  075A    E101     BNZ 0x75e
  075C    50ED     MOVF 0xfed, W, ACCESS
  075E    E113     BNZ 0x786
  0760    50D9     MOVF 0xfd9, W, ACCESS
  0762    0F0A     ADDLW 0xa
  0764    6EE9     MOVWF 0xfe9, ACCESS
  0766    CFDA     MOVFF 0xfda, 0xfea
  0768    FFEA     NOP
  076A    50EE     MOVF 0xfee, W, ACCESS
  076C    10ED     IORWF 0xfed, W, ACCESS
  076E    E10B     BNZ 0x786
  0770    0E01     MOVLW 0x1
  0772    6EF3     MOVWF 0xff3, ACCESS
  0774    0E04     MOVLW 0x4
  0776    50DB     MOVF 0xfdb, W, ACCESS
  0778    E004     BZ 0x782
  077A    90D8     BCF 0xfd8, 0, ACCESS
  077C    36F3     RLCF 0xff3, F, ACCESS
  077E    06E8     DECF 0xfe8, F, ACCESS
  0780    E1FC     BNZ 0x77a
  0782    50F3     MOVF 0xff3, W, ACCESS
  0784    128C     IORWF 0xf8c, F, ACCESS

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mc Coy schrieb:

> ich hab mir grad den Assembler Code angeschaut. Demzufolge benötigt die
> if Abfrage 59 Takte, sehe ich das richtig?

Bei 8bit PICs sind Befehle nicht Takte.
Ich glaube es sind 4 Takte pro Befehl.

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NOP = no operation
sprich es tut nichts, Preisfrage welchen Sinn hat es denn dann?
> Data Hazards verhindern

ansonsten: Opcode Befehl != Takt
jeder Opcode braucht unterschiedlich viele Takte im Allgemeinen
im Speziellen gibt es oft Ausnahmen (RISC, zb AVR, PicoBlaze)

um dasganze auf Zeit zu beziehen (MegaInstr/Second) muss
natürlich die Frequenz bekannt sein

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sicher das das asm-listing wirklich bloss die If abfrage ist?

denn ein

0746    EC17     CALL 0xa2e, 0


hätte ich dort nicht erwartet.

(ich kenn aber bloss Atmel und x86 Assembler)

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MIPS = Meaningless Indicator of Processor Speed

Autor: Sebastian H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenn' noch folgende Übersetzung von unserem Prof. =)
MIPS = Meaningless Information Prepared for Salesmen

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn's noch jemanden interessiert: Diese NOPs sind eine optische 
Täuschung, denn die PIC18 haben 2-Wort-Befehle (z.B. für mem to mem 
move), und der Disassembler stellt das zweite Wort als NOP dar. 
Wahrscheinlich sind das auch wirklich NOPs, wenn man frech genug ist, da 
reinzuspringen.

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Demzufolge benötigt die
>if Abfrage 59 Takte, sehe ich das richtig?
Nein. Das siehst du falsch. Über die vorhandenen Befehle:

  0746    EC17     CALL 0xa2e, 0
  075A    E101     BNZ 0x75e
  0778    E004     BZ 0x782
  0780    E1FC     BNZ 0x77a

werden weitere Schritte eingefügt, die BZ und BNZ sind abhängig von 
gewissen Ergebnissen aus Registerwerten, die von den Eingangsbedingungen 
abhängen.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.