Я нахожусь в процессе написания программы сборки, которая принимает две строки в качестве входных данных и объединяет их. Вот что у меня есть: (с использованием синтаксиса NASM)
SECTION .data
hello: db "Hello ",0
world: db "world!",0
SECTION .text
; do the concatenation
Поскольку я никогда раньше не работал со строками в ассемблере x86, мне нужно знать, как работает хранение строк и управление ими.
Я предполагаю, что после того, как длина каждой строки станет известна, эта конкатенация будет просто включать перемещение фрагментов памяти. Эту часть можно упростить, используя libc
. (Я могу использовать strlen()
и strcat()
.)
Моя настоящая проблема в том, что я не знаком с тем, как строки хранятся в сборке x86. Они просто добавляются в стек...? Они куда-то кучкой идут? Должен ли я использовать malloc()
(как-то)?