test$ cat test.asm %define INCBINLIST db "" %imacro libeld 1-2.nolist %strcat %%label "lib_", %1 %deftok %%token %%label %strcat %%filename %1,".eld" %xdefine INCBINLIST INCBINLIST, {align 16, db 0}, %%token:, incbin %%filename dd %%token %endmacro %imacro dump_incbin 1-*.nolist %rep %0 %1 %rotate 1 %endrep %endmacro section table vstart=0 libeld "a" libeld "b" libeld "c" section lib vstart=0 dump_incbin INCBINLIST test$ dd if=/dev/zero bs=1 of=a.eld count=512 512+0 records in 512+0 records out 512 bytes copied, 0.000743326 s, 689 kB/s test$ dd if=/dev/zero bs=1 of=b.eld count=1024 1024+0 records in 1024+0 records out 1024 bytes (1.0 kB, 1.0 KiB) copied, 0.00126436 s, 810 kB/s test$ dd if=/dev/zero bs=1 of=c.eld count=2048 2048+0 records in 2048+0 records out 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.0024213 s, 846 kB/s test$ nasm -v NASM version 2.16.02rc2 compiled on Oct 12 2023 test$ nasm test.asm -l /dev/stderr 1 2 %define INCBINLIST db "" 3 4 %imacro libeld 1-2.nolist 5 %strcat %%label "lib_", %1 6 %deftok %%token %%label 7 %strcat %%filename %1,".eld" 8 %xdefine INCBINLIST INCBINLIST, {align 16, db 0}, %%token:, incbin %%filename 9 dd %%token 10 %endmacro 11 12 %imacro dump_incbin 1-*.nolist 13 %rep %0 14 %1 15 %rotate 1 16 %endrep 17 %endmacro 18 19 section table vstart=0 20 00000000 [00000000] libeld "a" 21 00000004 [00020000] libeld "b" 22 00000008 [00060000] libeld "c" 23 24 section lib vstart=0 25 00000200 - dump_incbin INCBINLIST 25 00000600 - 25 00000600 test$ ~/proj/nasmtest/rc/nasm -v NASM version 3.01rc2 compiled on Oct 6 2025 test$ ~/proj/nasmtest/rc/nasm test.asm -l /dev/stderr 1 2 %define INCBINLIST db "" 3 4 %imacro libeld 1-2.nolist 5 %strcat %%label "lib_", %1 6 %deftok %%token %%label 7 %strcat %%filename %1,".eld" 8 %xdefine INCBINLIST INCBINLIST, {align 16, db 0}, %%token:, incbin %%filename 9 dd %%token 10 %endmacro 11 12 %imacro dump_incbin 1-*.nolist 13 %rep %0 14 %1 15 %rotate 1 16 %endrep 17 %endmacro 18 19 section table vstart=0 20 00000000 [00000000] libeld "a" 21 00000004 [00020000] libeld "b" 22 00000008 [00060000] libeld "c" 23 24 section lib vstart=0 25 00000200 - dump_incbin INCBINLIST 25 00000600 - 25 00000600 test$