AVR asambler kode ? (Læst 3410x)

Offline bws

  • Lavpas filter
  • ****
  • Indlæg: 261
  • Antal brugbare Indlæg: 24
    • Vis profil
AVR asambler kode ?
« Dato: April 01, 2013, 12:33:32 »
hey

nu er det er stykke tid siden jeg sidst har leget med ASM kode, så er noget rusten på dette område, så derfor har jeg lige nogen spørgsmål til nogen bestemte linjer kode i denne kode:

http://sourceforge.net/p/abavr/lib/ci/e3429e3493e08015d94d9237699bf15c085970c7/tree/WS2811/WS2811.h

det skal sige at den er header til noget C kode hvor der er sat ASM kode ind i, her bruger personen en kode som er sådan her:

sbi %[port], %[pin]

umildbart ville jeg sige at han linker til en adr i program koden, men forstår ikke hvordan ? kan se at det måske har relevans til noget i slutningen af koden der er sådan her:

"16:\n" \
: \
: [rgb] "z" (RGB), \
  [len] "w" (LEN), \
  [port] "I" (_SFR_IO_ADDR(PORT)), \
  [pin] "I" (PIN) \
: "r18", "r19", "r20", "r26", "r27", "cc", "memory" \

men forstår intet af overstående kode ? er noget der GNU-compiler specifikt ?

håber der nogen der forstår mere af det en mig, så jeg ikke skal til at forklare mig på et engelsk sproget forum :)

MVH
-Bjarne

 

Offline gerd

  • Administrator
  • µProcessoren
  • *****
  • Indlæg: 915
  • Antal brugbare Indlæg: 97
    • Vis profil
    • Hjemmeside med nogle af mine projekter
Sv: AVR asambler kode ?
« Svar #1 Dato: April 04, 2013, 19:34:06 »
Hej Bjarne,
jeg har fundet det:
http://www.nongnu.org/avr-libc/user-manual/inline_asm.html

Det betyder:
: \  A list of output operands, separated by commas.

: [rgb] "z" (RGB), \ A comma separated list of input operands.
  [len] "w" (LEN), \
  [port] "I" (_SFR_IO_ADDR(PORT)), \
  [pin] "I" (PIN) \

: "r18", "r19", "r20", "r26", "r27", "cc", "memory" \ Clobbered registers

gerd