2016-07-15 8 views
2

Was genau passiert mit weniger als 2 Zeilen Code?Was VST/VLD tatsächlich tun?

vst1.64 {d8, d9, d10, d11}, [r4:128]! 
vst1.64 {d12, d13, d14, d15}, [r4:128] 

Allgemeiner gesagt, möchte ich wissen, was VST & VLD seit doc tun aus: ARM InfoCenter nicht, es für mich klar machen.

Antwort

2
vst1.64 {d8, d9, d10, d11}, [r4:128]! 

Dieser Befehl speichert den Inhalt der Register D8, D9, D10 und D11 an der durch R & sup4; zeigte. Dieser Ort ist so angedeutet, dass er auf eine 128-Bit-Grenze ausgerichtet ist. Danach wird r4 um die Anzahl der gespeicherten Bytes erhöht. Diese würden 32 (viermal 8 Bytes) in Ihrem Fall

vst1.64 {d12, d13, d14, d15}, [r4:128] 

Diese Anweisung hat das gleiche wie die oben, aber speichern d12, d13, d14 und d15. R4 wird nicht inkrementiert, sondern dort belassen, wo es ist.

+0

Erwähnenswert ist, dass die gültigen Muster für die Registerliste stark eingeschränkt sind. Aus dem verknüpften Dokument müssen sie entweder 4 zusammenhängende Register sein, oder mit einem Schritt von 2. Sie können also nicht kostenlos mit einem Store wie 'vst1.64 {d9, d8, d11, d10}, [dst] shuffle '. Ich nehme an, dass die Maschinencodierung nur das erste Register codiert und ein weiteres Bit für Schritt = 1 oder 2. –

+0

@Nils Pipenbrinch Vielen Dank. Aber würdest du es bitte deutlicher machen? Zum Beispiel: Wie wird der Inhalt von d8, d9, d10, d11 zum Speichern von r4 verwendet und was bedeutet .64 gefolgt von vst1? – Kobayashi

+1

Diese speichert nicht in 'r4', sondern in den Speicherort unter der Adresse' r4'. '.64' ist die Elementgröße. Für ein 'vst1' hat es keine große Auswirkung (außer in einigen Fällen Ausrichtung und Endianismus), aber es würde mehr Auswirkungen auf' vst2', 'vst3' oder' vst4' haben, während Strukturen vor dem Speichern in den Speicher entschachtelt werden. – Dric512