Код: Выделить всё
.print:
push rcx ; save increment if used in another function
xor rcx, rcx ; reset increment to 0
.print_loop:
cmp byte [rsi + rcx], 0 ; check if null
je .print_done ; if yes print the value beacause end of string
inc rcx ; else increment
jmp .print_loop ; and restart the operation
.print_done:
mov rdx, rcx ; pass the string size as parameter syscall sys_write
mov rax, 1 ; prepare syscall sys_write function
mov rdi, 1 ; prepare syscall stdout output
syscall ; print the string
pop rcx ; get the old increment value to handle return
ret
Код: Выделить всё
section .bss
buffer resb 20 ; Buffer for int to string
buffer resb 100 ; buffer for message and other text
; ... other buffer if needed
код>. Я чувствую, что могу использовать стек для создания локальной переменной и перемещения базового указателя для обработки моего нового подстека стека, но я не думаю, что это хорошее решение, особенно когда мне нужно объединить мою новую строку.Если кто-нибудь знает, как создать массив символов, я приму любой совет и информацию.
Я уже пытался освободить место в своем стеке и освободить его позже, если понадобится. чтобы объединить мою строку, но это создает большое пустое пространство в моей памяти. И непросто динамически использовать subq ${size_needed}, %rsp для создания локальных переменных при следующем вызове функции. Я не уверен, что это хорошая практика.
Я также уже пробовал объявление .bss, но мне нужно одно объявление по строке, и я считаю, что это очень плохо.
Подробнее здесь: https://stackoverflow.com/questions/791 ... hars-array
Мобильная версия