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

Jan Waclawek konfera na efton.sk
Neděle Listopad 9 23:57:53 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á.



Ani mna nic mudrejsie nenapadlo, tiez to robim (aj) kvoli tomuto; ale ja
tam potrebujem dostat aj nejake symboly z C, takze to nakoniec musim
narvat do funkcie. Ono to sice potom vykrikuje, ze .rodata je nespravna
section vo vnutri funkcie, ale s tym sa da zit... :-)

wek





Další informace o konferenci Hw-list