Хорошо, это может быть глупый вопрос, но я предполагаю, что я и другие могут узнать в процессе:Доступ к стеку из адресов без x4 - возможно ли это?
Я работаю с 32-битным ассемблере, и при & т синтаксисом.
Предположим, я хочу создать строку динамически, сохраняя его содержимое в стек:
.data
str: .long 0
string: .string "value is %s.\n"
.globl main
movb $0,str+3 #terminate the string
movb $67,str+2
movb $67,str+1
pushl $str
movl %esp,%eax
incl %eax
push (%eax)
push $string
call printf
addl $12,%esp
ret
Это Безразлично «т работы, и я получаю ошибку сегментации. Однако, если я комментирую строку
# incl %eax
и добавить еще один байт в начале ул:
movb $67,str
затем он отлично работает, и отображается CCC.
Кажется, что я не могу ссылаться на строку, начинающуюся с адресов, которые не кратно 4. Или я не прав? Я знаю, что могу ссылаться на переменные с любого адреса, но есть ли способ сделать это со стеком?
Еще раз спасибо @Jester! Это сработало отлично! : D – francisaugusto