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. Protoe 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"
>...
>
>Protoe neumím dostat tu délku nìjak rozumnì v C do konstanty a nechci
>kvùli tomu dìlat kopii do RAM. Moná 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