2016-09-11 6 views
-2

Ich habe ein einziges Bild gesehen, das drei Ansätze zum Desing Conditional Instruction zeigt. Es sieht so aus:Drei Ansätze, um bedingte Anweisungen zu entwerfen

1. One step: 
bz s1, label ; branch if s1 = 0 
jecxa label ; branch if ecx = 0 
2. Two steps with tags: 
CP A, 0   ; set flags 
JR Z, MULEND ; jump if Z = 1 

cmp eax, 0  ; set flags 
jz mulend  ; jump if zf = 1 

3. Two step with predicates: 
cmp.eq p1, p2 = r1, r2 ; if r1=r2 
(p1) add r3 = 1, r3  ; then r3 := r3 +1 
(p2) add r3 = 3, r3  ; else r3 := r3 + 3 

Und ich weiß nicht was los ist. Ich könnte in Google suchen, aber ich kann nichts finden. Wenn jemand weiß, worum es geht, bitte referenziere mich irgendwo.


Ich mag würde diese kostenlosen Möglichkeiten zur Steuerung einer Strömung des Programms vergleichen: Also:

Advantages: 
1. There is no data-dependency (flag register) 
2. None? 
3. There is less branch instruction in implementation of if-then-else 
Disadvantages: 
1. None? 
2. There is data-dependency (flag register) 
3. Data-dependency of registers for the true-predicate and the false-predicate 

Bitte markieren Sie ihn und sagt etwas anderes.

+2

Was ist Ihre Frage? –

+0

Es ist keine Frage. Ich bitte um Hilfe, um weitere Informationen zu diesem Post zu finden. Ich habe versucht, alleine zu suchen, aber ohne Erfolg. Wahrscheinlich sind die Begriffe, die auf der Folie verwendet werden, "spezifisch" für die jeweilige Sprache und ein Problem beim Googlen. – Gilgamesz

+0

Entschuldigung. Diese Seite ist für spezifische Programmierfragen über ein Problem, das Sie haben. –

Antwort

1

Welche Art von anderen Informationen möchten Sie? Ich würde dies als Kommentar posten, aber es könnte als Antwort funktionieren.


Das Prädikat Version sieht mir ziemlich komisch, aber das ist wahrscheinlich, weil ich zu sehen sagt Anweisungen, um die Fahnen als Eingaben verwenden nur gewohnt bin.

Und es scheint wirklich seltsam für cmp, zwei separate Ergebnisse, inverse voneinander zu produzieren. Ist das wirklich einfacher, als Anweisungen die Umkehrung eines Prädikats verwenden zu lassen? (2-Ergebnis cmp gegen ein zusätzliches Bit in der Codierung von jeder prädizierten Anweisung)


Other than that, sieht alles wirklich klar und einfach, wenn Sie x86 gesehen haben. IIRC, MIPS ist mehr wie die "One step" -Version, da anstelle eines FLAGS-Registers seine Vergleichsanweisungen GP-Register als Ausgaben verwenden.

+0

Ich habe meinen Beitrag @PeterCordes bearbeitet – Gilgamesz