1

Powiedzmy, że mam blok rept/endr... coś takiego działa (podmieniając offset w move):

.q         set    0
            rept 10
            move.b    #123,.q(a0)
.q         set    .q+16            
            endr

Ale powiedzmy, że chcę wygenerować skok wewnątrz klonowanego kodu - coś ala (co niestety nie działa):

.q         set    0
            rept 10
            ; ................
            tst.w    d0
            ble.s    _foo.q
            ; ...... some code
_foo.q            
.q         set    .q+16            
            endr

czyli chciałbym w kolejnych iteracjach etykieta _foo była wygenerowana z innym indeksem (_foo0, _foo16 itd).
da się to zrobić? oczywiście mogę to obejść jmp *+4 (czy ileś tam) ale wolałbym nie;)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

2

Z tego co pamiętam to Devpac ma problem z lokalnymi etykietami w REPT.
Jedyne obejście jakie znam to zastosowanie Macro i tymczasowej etykiety "\@":


TEST    MACRO
        nop
        tst.w    d0
        ble.s    \@
        addq.w    #1,d0
\@
    ENDM

    REPT    10
        TEST
    ENDR
Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

3

dzięki. nie znałem tego tricku z \@. jutro sprawdzę czy działa, ale wygląda sensownie:)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

4

jakby co to w MACRO lokalnych etykiet można dać więcej - \@1  \@2 \@3 itd

TEST    MACRO
        nop
        tst.w    d0
        ble.s    \@
        bne.s    \@1
        addq.w    #1,d0
\@
        nop
\@1
    ENDM

    REPT    10
        TEST
    ENDR
Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

5

działa - thanks. w sumie fajna sprawa przy unrollowaniu loop'ów, które zawierają skoki. dotychczas męczyłem się z copy/paste;)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

6

okazuje się że \@ można łączyć z etykietami:

    yourmacro  macro
        bne .skip\@
        nop
    .skip\@
         endm

        rept 16
        yourmacro
        endr

http://www.atari-forum.com/viewtopic.php?p=43016#p43016

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org