ASM v gcc a C99:? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ASM v gcc a C99:? – C / C++ – Fórum – Programujte.comASM v gcc a C99:? – C / C++ – Fórum – Programujte.com

 

Jonáš0
Duch
18. 6. 2017   #1
-
0
-

Pokud chci v gcc použít v C kus kodu v asembleru použiji detektivu asm a pokud do asm programu z c předává proměnná x a data se mají vracet v proměnné i  bude kód vypadat nějak takto

asm volatile(
   "  lsl %[d],#16    \n\t"

....
   "  movs %[c],#4  \n\t"

  : [c] "+r" (i)
   : [d] "r" (x)
   );

Potřeboval bych něco podobného realizovat v C99 tedy s direktivou __asm ale nějak se nikde nemohu dočíst jak se v __asm C-99 předávají proměnné a jak se to celé zapisuje

Poradíte?

Nahlásit jako SPAM
IP: 188.92.9.–
gna
~ Anonymní uživatel
1891 příspěvků
18. 6. 2017   #2
-
0
-

Uvedením standardu pro kompilaci jen přijdeš o nestandardní rozšíření. Jinak asm, __asm, __asm__ fungují stejně. Správně je třetí varianta, která by měla fungovat vždycky.

Nahlásit jako SPAM
IP: 213.211.51.–
Jonáš
~ Anonymní uživatel
8 příspěvků
19. 6. 2017   #3
-
0
-

#2 gna

Nevím co by mělo nebo nemělo fungovat, ale vím, že at se použije __asm nebo __asm__

končí pokus o překlad chybou ~expected a ")" na řádku 

~~: [c] "+r" (i)
z čehož usuzuji že je syntaxe jiná a projevuje se to odkazem na chybějící závorku )

Nahlásit jako SPAM
IP: 188.92.9.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 6. 2017   #4
-
0
-

Tak to bych si tipnul, že to chceš pro MSVC. To by bylo dobré zmínit.

int i, x;

__asm
{
	mov eax, x
	mov i, eax
}
Nahlásit jako SPAM
IP: 213.211.51.–
Jonáš0
Duch
19. 6. 2017   #5
-
0
-

#4 gna
Cchci to pro ARM C konkrétně armc v 5.04, v noc mě napadlo zkusit přímo v asm kódu použít c proměnné a překladač to sežral, i když jsem nekontroloval co z něj vypadlo . Metišéte zda lze _asm s touto syntaxi použít i v gcc, abych nemusel celý kod mit ve zdrojaku 2x překladat ho podminěně podle použitého překladače?

Nahlásit jako SPAM
IP: 188.92.9.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 6. 2017   #6
-
0
-

gcc a vc nejsou kompatibilní. armc neznám.

Nahlásit jako SPAM
IP: 213.211.51.–
Jonáš
~ Anonymní uživatel
8 příspěvků
19. 6. 2017   #7
-
0
-

#6 gna
Vim., nakonec jsem kod upravil podle pravidel VC a to se zda OK, nicmeně zatím jsem to nepřeložil protože jsem tím našel chybu v armc a dostal ho do stavu kdy vrací interní chyu překladače    ale to už je čistě záležutost armc.

Nahlásit jako SPAM
IP: 62.212.73.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

[C99]DLL — založil Tango

[C99] Velkosť premenných — založil Tango

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý