Что `%ifdef` и`%defstr` делают в сборке (в терминах непрофессионала)?
Я читаю некоторый исходный код ассемблера только для целей обучения (мне нравится учиться, выясняя код).
Я наткнулся на следующие строки:
%ifdef KERNEL
kernel_file:
%defstr KERNEL_STR %[KERNEL]
incbin KERNEL_STR
.end:
align 512, db 0
%else
align BLOCK_SIZE, db 0
%ifdef FILESYSTEM
filesystem:
%defstr FILESYSTEM_STR %[FILESYSTEM]
incbin FILESYSTEM_STR
.end:
align BLOCK_SIZE, db 0
%else
filesystem:
%endif
%endif
я знаю что %include
делает, и я могу сказать, что %ifdef
является оператором if.
Я полностью потерян с %defstr
, Я только нашел объяснение на этом сайте и запутался еще больше.
Может ли кто-нибудь дать мне ОЧЕНЬ ОСНОВНОЕ объяснение того, что он делает?