Angenommen:
Code: Alles auswählen
asm ("..."
"..."
"fld x1"
: "x1" (arr[1][2])
);
Code: Alles auswählen
asm ("..."
"..."
"fld x1"
: "x1" (arr[1][2])
);
Code: Alles auswählen
asm ("..."
"..."
"fld x1"
: "S" (arr), ...
: ...
);
Code: Alles auswählen
asm ("fld (%%esi);" // <-- laed arr[0]
"addl $4, %%esi;"
"fld (%%esi);" // <-- laed arr[1]
"addl $16, %%esi;"
"fld (%%esi);" // <-- laed arr[5]
: "S" (arr), ...
: ...
);
Code: Alles auswählen
printf("Davor: %f %f, %f, %f\n", vek[0],vek[1], vek[2],vek[3]);
float vek[4] = { 4.0, 3.0, 2.0, 1.0 };
asm( "xorl %%eax, %%eax;"
"movups (%%ecx), %%xmm0;"
"addps %%xmm0, %%xmm0;"
"movups %%xmm0, (%%ecx);"
:
"=c" (*vek)
:
"*c"(vek)
:
"xmm0",
"eax"
);
printf("Danach: %f %f, %f, %f\n", vek[0],vek[1], vek[2],vek[3]);
Code: Alles auswählen
float * p = vek;
Code: Alles auswählen
float vek[4] = { 4.0, 3.0, 2.0, 1.0 };
float * p = ...;
vek = p; // Funktioniert nicht
Da das Ergebnis ein Array ist, empfiehlt es sich die Adresse des Ergebnisvekors als Input zu uebergeben.majias hat geschrieben: Muss man die Matrix und den Vektor als Input und den Ergebnisvektor als Output zuweisen?
Man kann den Code zu grossen Teilen uebernehmen. Ich sage natuerlich nicht welche Teile.majias hat geschrieben: Muss man den Code aus der 1a) eigentlich noch stark verändern für die 1b) oder kann man ihn mehr oder weniger mit copy & paste übernehmen?
Code: Alles auswählen
#include <stdio.h>
main(){
float mat[3][4] = {{-886.8, 0.0, -512.0, 0.0},
{0.0, 886.8, -512.0, 0.0},
{0.0, 0.0, -1.0, 0.0}};
float vek[4] = {4.0, 3.0, 2.0, 1.0};
float res[3];
asm("movl $3, %%ecx;"
".for:"
[...]
"loop .for;"
: "=b" (res)
: "d" (mat), "b" (vek), "b" (res)
: "ebx", "ecx", "edx"
);
printf("Der Ergebnisvektor enthaelt folgende Werte: %f, %f, %f\n", res[0], res[1], res[2]);
}
Koennte sein, dass er das mit impossible constraint meint.nairolf hat geschrieben:: "d" (mat), "b" (vek), "b" (res)
Das ist schon mal ein impossible constraint.mw1039 hat geschrieben:Ich weiss nicht, ob das nur ein Tippfehler von dir war, aber du weist sowohl vek als auch res an ebx zu