lea у нас теперь в rax хранится 0xef9(то есть нужная нам строка)
Далее мы из rax перемещаем значение в rdi, а далее rdi подставляем в функцию печати?
У тебя rdi и rax два 64 битных регистра, то есть каждый из них может хранить только 8 символов "hello world" у тебя 11 символов
Только вот проблемка то в том, что функция принимает адрес, а какой нахрен адрес у регистра, даже если его hello world умещался бы в 8 байт?)
если я правильно понимаю, то функция puts печатает стэк
Функция puts печатает строку) при чём тут стек? Строка то может быть где угодно
в си нет строк
А смотри, что стандарт говорит про strcat The strcat function appends a copy of the string pointed to by s2 (including the terminating null character) to the end of the string pointed to by s1. The initial character of s2 overwrites the null character at the end of s1. If copying takes place between objects that overlap, the behavior is undefined. Как же так? Ведь в си нет строк
откуда ты это взял?
> стандарт говорит
Чтобы ты себя совсем не утруждал, стр 364
ну давай сложи две строки в первую строку
char *abc = "hello " + "world";
Обсуждают сегодня