Hirdetés
- Először sikerült AI felskálázót integrálnia a Proton fő komponensébe a Valve-nak
- A Dbrand megfejtette mi hiányzik a Steam Machine-ről
- A NAND helyett a DRAM lesz a Samsung aranybányája
- Meglepetés: az ARM is belép az NVIDIA titkos klubjába
- Szeretne nagyobb versenyt a Microsoft, de nem szeretne túl sok gyártót a piacon
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Vezeték nélküli fejhallgatók
- Milyen billentyűzetet vegyek?
- A Dbrand megfejtette mi hiányzik a Steam Machine-ről
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen TV-t vegyek?
- TCL LCD és LED TV-k
- Külső merevlemezek - USB, eSATA, FireWire HDD
- Projektor topic
- Milyen alaplapot vegyek?
Új hozzászólás Aktív témák
-
stepboy
csendes tag
válasz
CPT.Pirk
#5790
üzenetére
Valószínű, hogy máshol van a hiba, ami kihatással van az USB működésére. A projekt többi része működik/meg lehet állapítani, hogy működik?
Viszont a kódot biztosan rossz:
__attribute __((naked))
void delay_loop (unsigned n)
{
__asm volatile ("1: sub r0, #1");
__asm volatile (" bne 1b");
__asm volatile (" bx 1r");
}[Itt találod a GCC Basic Asm leírását]
Van benne néhány fontos megjegyzés:
Do not expect a sequence of asm statements to remain perfectly consecutive after compilation. If certain instructions need to remain consecutive in the output, put them in a single multi-instruction asm statement. Note that GCC’s optimizers can move asm statements relative to other code, including across jumps.vagy ezek:
GCC does not parse basic asm’s AssemblerInstructions, which means there is no way to communicate to the compiler what is happening inside them. GCC has no visibility of symbols in the asm and may discard them as unreferenced. It also does not know about side effects of the assembler code, such as modifications to memory or registers. Unlike some compilers, GCC assumes that no changes to general purpose registers occur. This assumption may change in a future release.For basic asm with non-empty assembler string GCC assumes the assembler block does not change any general purpose registers, but it may read or write any globally accessible variable.
Megnéztem az optimalizációs leírást is, O3-mal jön az inline valóban, de azt ki lehet kapcsolni "noinline" attribute-tal (bár ez egy jó régi GCC: 4.7.4).
Ami a megjegyzéseket illeti, az elsőt nem hiszem, hogy vonatkozik rád a volatile miatt, tehát a sorrend marad. Viszont az inline miatt előfordulhat, hogy nem az van az R0-ban, amire számítasz. Normál esetben a függvényhíváskor az első paraméter valóban oda kell, hogy kerüljön, de ha a függvényt inline-olja a fordító, akkor már nincs garantálva, hogy az R0-án keresztül ad át bármit is, mivel a fordító nem látja, hogy bármi is történik az "n" változóval és azt feltételezi, hogy a regisztereket nem módosítja az assembly kódod.
Azt gondolom, hogyha már mindenképpen beágyazott assembly-t akarsz írni, akkor azt valahogy így kéne csinálni:
void delay_loop (unsigned n)
{
__asm ("1: sub %0, #1 \n\t"
" bne 1b \n\t"
" bx 1r "
:
: "r" (n));
}Mindezt az Extended-Asm leírás alapján (a fenti link következő oldala); itt már jelzed a fordítónak, hogy egy regisztert biztosan használsz és minden egy helyen van, ezért nem változhat meg a sorrend.
Bár a legjobb mindenképpen az lenne, ha az egészet átrakod sima assemblyre és akkor a fordító számára egy függvényhívás lesz a kód, amivel már nem tud trükközni.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Trollok komolyan
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Építő/felújító topik
- Futás, futópályák
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Gyúrósok ide!
- Vezeték nélküli fejhallgatók
- Milyen routert?
- Milyen billentyűzetet vegyek?
- A Dbrand megfejtette mi hiányzik a Steam Machine-ről
- További aktív témák...
- Dell Latitude 5420 14" FHD IPS i7-1185G7 16GB 512GB NVMe gar
- LOQ 15ARP9 15.6" FHD IPS Ryzen 7 7435HS RTX 4050 16GB 512GB NVMe magyar vbill gar
- Apple MacBook Air 13.6" M2, 16GB/256GB (MC7X4MG/A ) Éjfekete - 100% akku - Garancia
- Gigabyte GeForce 760 4 GB -os VGA kártya ! aKCIóó!
- Apple iPhone 13 Pro / 128GB / Kártyafüggetlen / 12Hó garancia / Akku : 100%
- HP 14 Elitebook 640 G9 FHD IPS i5-1235U 4.4Ghz 10mag 16GB 256GB Intel Iris XE Win11 Pro Garancia
- HIBÁTLAN iPhone 15 Pro Max 256GB Blue Titanium -1 ÉV GARANCIA -Kártyafüggetlen, 100% Akkumulátor
- HIBÁTLAN iPhone 13 Pro Max 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3685 100% Akkumulátor
- Apple iPhone 13 256GB / Kártyafüggetlen / 12Hó Garancia / 100% Akku
- BESZÁMÍTÁS! GIGABYTE B650M R5 7600 32GB DDR5 1TB SSD RX 9070 16GB NZXT H700 Cooler Master 750W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


