Strcat в сборке

Я пытаюсь объединить две строки в сборке, но у меня не получается. У меня есть следующий фрагмент кода:

.data

message: .asciz "message"
leading: .asciz "leading"

.globl main

main:
    push $message
    push $leading

    call strcat

    push %eax

    call printf
...

Когда я пытаюсь добавить строку с более чем 16 символами в другую строку, это дает ошибку сегментации в вызове strcat в соответствии с gdb. Я что-то упустил здесь? Есть ли способ заставить strcat работать со строками длиннее 16 символов?

Спасибо!


person Devos50    schedule 06.06.2012    source источник


Ответы (1)


Вы не выделили более 16 байтов. Вам нужно зарезервировать достаточно памяти, чтобы результирующая строка поместилась в место назначения.

person Jens Björnhager    schedule 06.06.2012
comment
Спасибо за быстрый ответ! Не могли бы вы объяснить, как это сделать со строками? Я новичок в сборке ;) - person Devos50; 06.06.2012
comment
Неважно, я нашел его. Мне нужно использовать буфер, скопировать сообщение в этот буфер с помощью strcpy, а затем я могу безопасно добавить :) - person Devos50; 06.06.2012