Mit inlineasm MOMCPUNAME in char schreiben
-
Öhm, vielleicht mal ein paar \n-s ans Zeilenende?
asm ("bla\n" "blubb\n");
Hintereinanderstehende Zeichenkettenliterale werden einfach zusammengezogen.
-
__asm ("xor eax, eax\n" "cpuid\n" "mov dword ptr vendor_string[0], ebx\n" "mov dword ptr vendor_string[4], edx\n" "mov dword ptr vendor_string[8], ecx");
ich hab gelesen, dass man bei gnu ein _ vor die non-asm-variable machen muss.
Aber wie soll ch das jetzt machen?!?
so:__asm ("xor eax, eax\n" "cpuid\n" "mov dword ptr _vendor_string[0], ebx\n" "mov dword ptr _vendor_string[4], edx\n" "mov dword ptr _vendor_string[8], ecx");
oder so:
__asm ("xor eax, eax\n" "cpuid\n" "mov _dword ptr vendor_string[0], ebx\n" "mov _dword ptr vendor_string[4], edx\n" "mov _dword ptr vendor_string[8], ecx");
es gibt noch mehr fehler:
C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s: Assembler messages: C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4349: Error: too many memory references for `xor' C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4351: Error: junk `ptr vendor_string[0]' after expression C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4351: Error: too many memory references for `mov' C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4352: Error: junk `ptr vendor_string[4]' after expression C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4352: Error: too many memory references for `mov' C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4353: Error: junk `ptr vendor_string[8]' after expression C:\DOKUME~1\blub\LOKALE~1\Temp/ccoVaaaa.s:4353: Error: too many memory references for `mov'
-
nung gibts weniger Fehler:
__asm ("xor %eax, %eax\n" "cpuid\n" "mov dword ptr vendor_string[0], %ebx\n" "mov dword ptr vendor_string[4], %edx\n" "mov dword ptr vendor_string[8], %ecx");
Fehler:
C:\DOKUME~1\blub\LOKALE~1\Temp/cc21aaaa.s:4351: Error: junk `ptr vendor_string[0]' after expression C:\DOKUME~1\blub\LOKALE~1\Temp/cc21aaaa.s:4352: Error: junk `ptr vendor_string[4]' after expression C:\DOKUME~1\blub\LOKALE~1\Temp/cc21aaaa.s:4353: Error: junk `ptr vendor_string[8]' after expression
-
weiß ja net obs zur allgemeinen Klärung beiträgt, habe mit ASM-Direktiven in C++ äußerst wenig zu tun aber das gibt die F.A.Q. her:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-41479.html
-
Checker&Murckser schrieb:
weiß ja net obs zur allgemeinen Klärung beiträgt, habe mit ASM-Direktiven in C++ äußerst wenig zu tun aber das gibt die F.A.Q. her:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-41479.html
Tut mir leid aber ich rall trotzdem nicht, wie ich mit dem "dword ptr vendor_string[0]" umgehen soll.
Normalerweise müsste ich ja ein _ vor die var setzen.
aer setzt geht das so nict.
scheinbar wegen dem dword ptr und zu sowas hab ich noch kein beispiel gefunden.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
*push*
kann keiner helfen?!?
-
Klar, schau dir die Links in dem verwiesenen FAQ-Eintrag an. Dort wird dir erklärt, wie du den GCC Inline-Assembler benutzen musst. So wie du es machst ist es fundamental falsch.
-
rüdiger schrieb:
Klar, schau dir die Links in dem verwiesenen FAQ-Eintrag an. Dort wird dir erklärt, wie du den GCC Inline-Assembler benutzen musst. So wie du es machst ist es fundamental falsch.
Die meisten sind für linux oder down.
und in den wenigen anderen steht auch nicht, wie ich mit diesem dword ptr umgehe.
-
ob linux oder windows macht ja keinen Unterschied.
-
cpu: opteroN 144
__asm__ __volatile__ ( "cpuid;" : "=a" (vendor_string[0]), "=b" (vendor_string[4]), "=c" (vendor_string[8]));
ausgabe: q
__asm__ __volatile__ ( "cpuid;" : "=b" (vendor_string[0]), "=c" (vendor_string[4]), "=d" (vendor_string[8]));
ausgabe:
__asm__ __volatile__ ( "xor %%eax, %%eax;" "cpuid;" : "=a" (vendor_string[0]), "=b" (vendor_string[4]), "=c" (vendor_string[8]));
ausgabe: ■
__asm__ __volatile__ ( "xor %%eax, %%eax;" "cpuid;" : "=b" (vendor_string[0]), "=c" (vendor_string[4]), "=d" (vendor_string[8]));
ausgabe: A
-
*push*
Bitte helft mal es funzt doch schon fast.
-
wo muss das dword hin?
-
*push*
-
*push* -.-