ARM assembler s nebo bez optimalizace

M

Mahenrev

Guest
Potřebuji pomoc s několika otázkami.

1] Pokud výstupní sestava je optimalizována s-O3 [těžké optimalizace], proč jsou všechny proměnné vedeny v registru?

2] Let říct, že jsme naprogramovány s větší množství proměnných, tedy 30 proměnných,
- Není-li optimalizovat, tak v něm uložené v paměti
- Je-li optimalizovat, tak v něm uložené v registru

když budete vědět, registr je plný?Proč je dokonce 1 proměnné uložené v paměti?

Thanks je předem

 
Udržování proměnné v registrech zajišťuje, že spuštění programu je co nejrychleji, protože žádný z dalších čtenářů (pomalejší) cache / paměť musí být provedeny.

Ale nemám opravdu uvidíte, jak si mají 30 proměnných v registrech všech dob?
Pokud je mi známo, ARM9 standardní provedení má 16 registrů, a jen málo z nich se obvykle používají, a ne ve skutečnosti k dispozici.

Pokud máte více proměnných, pak se bez registrů, bude konec s cache čtení / zápis (nebo v nejhorším případě, paměť čtení / zápis), která bude značně zpomalit spuštění programu.To je důvod, proč se každý snaží využít jako několik proměnných, jako je to možné ve vnitřních smyček, které se dostanou popraven mnohokrát za sekundu.

Další možností je balení 2/more proměnných do jednoho registru.
Stejně jako když máte 2 16bit proměnné, můžete dát je do jedné 32bit registru (nižší = 16 bitů první proměnné, vyšší 16 bitů = druhá proměnná) - nyní můžete získat některou z těchto proměnných se pouze 1 nebo 2 směny operací.Operace s ARM jádrem posunu jsou zdarma ...

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsměv" border="0" />
 
Assembler se snaží optimalizovat kód "balení" proměnných do registrů?

 

Welcome to EDABoard.com

Sponsor

Back
Top