Существует ли какой-нибудь метод, который позволяет автоматически развернуть все макросы, подставить все данные и удалить из несработавшие условия?
Исходный макрос:
Код:; LD reg,(IX+d) macro macro_ld_reg_ix_d reg, data, no_stack if reg != 0 ; A ld (.tmp + 1), a endif if no_stack == 1 || reg == 5 || reg == 6 ; || H || L if reg != 5 ld a, h ld (TMP1 + 1), a endif if reg != 6 ld a, l ld (TMP1), a endif else push hl endif ld hl, (rIX) if reg == 1 || reg == 2 ; B || C if no_stack == 1 ld a, d ld (TMP2 + 1), a ld a, e ld (TMP2), a else push de endif ld de, data else if no_stack == 1 ld a, b ld (TMP2 + 1), a ld a, c ld (TMP2), a else push bc endif ld bc, data endif if reg == 1 || reg == 2 ; B || C add hl, de else add hl, bc endif if reg == 1 || reg == 2 ; B || C if no_stack == 1 ld a, (TMP2 + 1) ld d, a ld a, (TMP2) ld e, a else pop de endif else if no_stack == 1 ld a, (TMP2 + 1) ld b, a ld a, (TMP2) ld c, a else pop bc endif endif ld reg, (hl) if reg == 0 ; A ld (.tmp + 1), a endif if no_stack == 1 || reg == 5 || reg == 6 ; || H || L if reg != 5 ld a, (TMP1 + 1) ld h, a endif if reg != 6 ld a, (TMP1) ld l, a endif else pop hl endif .tmp ld a, 0 endm
А нужно, чтобы он развернулся, подставились все необходимые значения и убрались все несработавшие условия. То есть, чтобы в итоге в тексте вместо
macro_ld_reg_ix_d A,99-100,0
нарисовалось такое:
Код:; macro_ld_reg_ix_d A,99-100,0 push hl ld hl, (rIX) push bc ld bc, 99-100 add hl, bc pop bc ld a, (hl) pop hl ;---------------------------------------




Ответить с цитированием