Jak vypnout optimalizaci u inline asm kodu? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak vypnout optimalizaci u inline asm kodu? – C / C++ – Fórum – Programujte.comJak vypnout optimalizaci u inline asm kodu? – C / C++ – Fórum – Programujte.com

 

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

Poradíte jak vypnout optimalizaci pro kus kódu, který je v C zapsán v asembleru pomoci inline asm?

jde mi o to, že potřebuji v přesný čas " zahýbat" výstupem a pro načasvání vkládám nop insturkce a překladač mi je pak vyhází nebo mi jinak vyoptimalizuje mnou spočítaný kus kodu, proste chci, aby v této časti nic nevymyšlel a otrocky přeložit přesně co napíšu.

Děkuji.

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

Vkládaný assembler není součástí Céčka. Vždycky je to specifické rozšíření konkrétního překladače, tak se podívej do dokumentace ke svému překladači.

V GCC je na to volatile.

Nahlásit jako SPAM
IP: 213.211.51.–
Jonáš0
Duch
27. 6. 2017   #3
-
0
-

#2 gna

__asm volatile (....); byla logická volba a použil jsme ji jako první, bohužel bud má __asm výjimku a volatile s ni nefunguje nebo je prostě v překladači chyba, protože ,i překladač vyháže , podle něj, nadbytečné nop instrukce a občas i upraví kód na , podle něj, lepší. Obojí je pro mě nepřípustné.

Napsal jsem autorům překladače, uvidíme co oni na to,


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

#3 Jonáš
Co je to tedy za překladač? Pokud možno uveďte i číslo verze.

Nahlásit jako SPAM
IP: 193.165.79.–
Ovrscout
~ Anonymní uživatel
113 příspěvků
27. 6. 2017   #5
-
0
-

#4 Ovrscout
Abych jen neprudil, pokud jde o gcc tak lze optimalizace (asi i v závislosti na verzi) ovládat

  • Vypnutím optimalizace na úrovni souboru - commandline -O0)
  • Vypnutím optimalizace na úrovni funkce  - __attribute__((optimize("O0")))
  • pomocí #pragma GCC optimize ("O0")

asm volatile by mělo fungovat také, zkuste dát každé NOP do samostatného asm volatile bloku.

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

#4 Ovrscout
Minule psat, že je to armc v 5.04. Takže asi armcc z ARM Compiler 5.

#3 Jonáš
Jestli je to tenhle překladač, tak to vypadá, že vkládaný assembler je jakýsi "virtuální". Instrukce se můžou nahradit, registry jsou implicitně deklarované lokální proměnné a tak. Jako by __asm jen přepnul syntaxi, ale vlastně nepíšeš přímo stroják a optimalizuje se to pohromadě.

Úplně vypnout optimalizace asi nebude žádoucí, tak bych tu funkci napsat externě čistě v asm. A armasm by ti to neměl překopat.

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

A teď koukám, že tu funkci nemusíš psát externě, ale ještě to umí embedded assembler, že celá funkce bude v assembleru a ten se nebude optimalizovat.

__asm return-type function-name(parameter-list)
{    
  // ARM/Thumb assembly code
  instruction{;comment is optional} 
  ... 
  instruction
}
// return musis napsat explicitnem a k parametrum nemuzes pres jmeno
Nahlásit jako SPAM
IP: 213.211.51.–
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, 106 hostů

Podobná vlákna

Jak vypnout monitor? — založil Sejček

Jak přesně funguje inline? — založil oxidián

Psaní kodu, jak na to? — založil Darex

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ý