OT gcc inline assembler mimo tela fcie; was: AC Load Analyzer

Miroslav Mraz mraz na seznam.cz
Neděle Listopad 9 23:06:55 CET 2014


Ano, problém byl asi v tom Extended, tedy v propojení s C. Protože jak 
jsem tak koukal, tak asm mimo tělo funkce používám už dost dlouho - 
třeba na string descriptory pro USB např.:

// Index 0x00: LANGID Codes
  "USB_StringDescriptor:\n\t"
  ".byte  (label_1 - .)\n\t" // <- délka následujícího pole, v C problém
  ".byte  USB_STRING_DESCRIPTOR_TYPE\n\t"
  ".byte  0x09, 0x04\n"
// Index 0x01:  Manufacturer string
  "label_1:\n\t"            // počítá se za překladu k této značce
  ".byte  (label_2 - .)\n\t"
  ".byte  USB_STRING_DESCRIPTOR_TYPE\n\t"
  ".byte  'M,0,'r,0,'a,0,'z,0,'i,0,'k,0,' ,0,'l,0,'a,0,'b,0,'s,0,'.,0\n"
// Index 0x02: Product
  "label_2:\n\t"
...

Protože neumím dostat tu délku nějak rozumně v C do konstanty a nechci 
kvůli tomu dělat kopii do RAM. Možná někdo přijde na to, jak udělat 
čistě v C, ale mě nic nenapadá.

Mrazík


Dne 9.11.2014 v 22:33 Jan Waclawek napsal(a):

>> tak už vím, kde byla chyba. Kdysi jsem se o to pokoušel a nešlo mi to,
>> tak jsem to napsal èistì v assembleru. Ale mám takový dojem, že problém
>> byl v té direktivì .incbin, ne v tom, že by to bylo mimo tìlo funkce.
>> Ale už je to dlouho, tak se mùžu mýlit.
>
> Mozem sa mylit aj ja. Mne to totiz tiez neslo, a nedavno mi ktosi ukazal
> cosi, co malo asm() mimo tela funkcie, tak som si to v hlave zrejme chybne
> dal dokopy s novou verziou gcc.
>
> V aktualnej dokumentacii
> (https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html) sa pise:
>
> Note that Extended asm statements must be inside a function. Only Basic asm
> may be outside functions (see Basic Asm).
>
> Ale vsetky tie kapitoly o inline asm vyzeraju byt prekopane, nic taketo v
> starsich verziach dokumentacie (vratane 4.9.2) nenachadzam... Ono to tam
> ale tato vlastnost mohla byt odjakziva, a ja som mozno stale skusal len
> to, co nazyvaju extended asm, t.j. ze som tam pchal tie parametre; tak
> preto som mozno nadobudol ten pocit...
>
> Je neskoro a nechce sa mi to skusat s tymi starsimi verziami.
>
> wek
>
>


Další informace o konferenci Hw-list