The following doesn't work anymore:
%define %$%1 %2
Minimized test case:
%imacro globaldef 1
%define %1 _%1
global %1
%endmacro
%define segment_code segment .text
%macro function_align 0
segment_code
align 4
%endmacro
%macro proc_start 1
%push %1
function_align
%1:
%define %$stack_restore
%assign %$arg_base 28
%assign %$var_base 4
push edi
push esi
push ebx
push ecx
push edx
push ebp
mov ebp, esp
%endmacro
%macro proc_name_def 2
; VVV ISSUE CODE
%define %$%1 %2
; ^^^ ISSUE CODE
%endmacro
%macro proc_arg 2
proc_name_def %2, ebp+%$arg_base
%assign %$arg_base %$arg_base+%1
%endmacro
globaldef test_func
function_align
proc_start test_func
proc_arg 4, test_arg
In nasm 2.15rc1, the following occurs:
min.nas:49: error: `%define' expects a macro identifier
min.nas:40: ... from macro `proc_arg' defined here
min.nas:35: ... from macro `proc_name_def' defined here
The sample test case above assembles successfully with nasm 2.14.03rc2. Possible regression?