A
меток и анонимных метокSize: a a a
A
меток и анонимных метокd
jmp 0f
...
jmp 1f
...
0:
...
1:A
A
d
E
@@:1. Обсуждение https://board.flatassembler.net/topic.php?t=20783
db @1
@1:
db @2
@2:
db @f
@@:
db @b
@1:
db @2
@2:
db @f
@@:
db @1
@1:
db @2
@2:
db @3
@3:
define @f @f1Далее:
define @ff @f2
define @b @b1
define @bb @b2
macro @@ tail
match label, @f1?
label tail
end match
local anonymous
@b3? reequ @b2
@b2? reequ @b1
@b1? reequ @f1
@f1? reequ @f2
@f2? reequ @f3
@f3? reequ anonymous
end macro
struc dummy
end struc
repeat 3
@@ dummy
end repeat
purge dummy
jmp @f2 ; -> 2(Макрос сделан только до @3, но можно с помощью цикла автоматизировать для всех меток. Просто, чтобы было понятно, что делает этот макрос)
@@: ; 1
jmp @b ; -> 1
jmp @f2 ; -> 3
@@: ; 2
jmp @b2 ; -> 1
@@: ; 3
jmp @b3 ; -> 1
repeat 10
macro @#% tail
match label, @#%#f?
label tail
@#%#b? equ @#%#f?
end match
local anonymous
@#%#f? equ anonymous
end macro
define @#%#f?
@#%
end repeat
Работает:@1: ; a
jmp @1f ; -> b
jmp @2f ; -> c
jmp @1b ; -> a
@1: ; b
jmp @1b ; -> b
@2: ; c
jmp @2b ; -> c
@1: ; d
jmp @1b ; -> dd
E
d
d
d