|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
GAS/AT&T Вызов printf с локальной переменной в качестве параметра09.04.2020, 18:37. Показов 4665. Ответов 13
помогите еще советом.
посидел не один день и что-то не дошло до меня почему программа крашится.
0
|
||||||
| 09.04.2020, 18:37 | |
|
Ответы с готовыми решениями:
13
Вызов функции с ссылкой на структуру в качестве параметра Передача переменной GET-запроса в качестве параметра в SQL-команду Как в качестве параметра запроса передать значение переменной? |
|
Модератор
|
||||||
| 09.04.2020, 19:57 | ||||||
Сообщение было отмечено pcmax как решение
Решение
Лучше бы отладчиком выполнить - будет понятно на какой строке.
Я вангую, что на 27-28 - из-за не восстановления стека после выделения места под локальные переменные - нет обратной
1
|
||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||
| 09.04.2020, 21:35 [ТС] | ||
|
printf наверное капризничает
0
|
||
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
||
| 10.04.2020, 11:39 | ||
pcmax Попробуй обнулить rax перед вызовом printf. На codewars например это обязательно иначе краш, причина не известна, если узнаешь почему так - напиши.
2
|
||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
| 10.04.2020, 12:36 [ТС] | ||||||
0
|
||||||
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
|
| 10.04.2020, 13:26 | |
Сообщение было отмечено pcmax как решение
Решение
Может теперь работает из-за того, что var выровнена по границе 16 байт? То есть вместо [rbp-64] передавать [rbp-56] для сохранения выравнивания. Всё же уточни в каком месте вылетает на printf или на syscall.
1
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|
| 10.04.2020, 14:13 [ТС] | |
|
нет. если ложу строку в локальную переменную не через буффер, то вылетает. если ложу метку, то есть адрес var , ведь var -это адрес, адрес в bss где лежит строка, то при чтении printf крашится.
но мы впрошлой теме писали из файла в локальную переменную и читали, и всем было норм.
0
|
|
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
||||||
| 10.04.2020, 15:11 | ||||||
|
По быстрому набросал код для FASM. В AntiX работает нормально.
Во вложении скомпилированный elf - сравни в дизассемблере свой elf с ним, может найдёшь причину.
1
|
||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
| 10.04.2020, 15:12 [ТС] | ||||||
спасибо
1
|
||||||
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
|
| 10.04.2020, 15:19 | |
|
Так почему крашилось то?
В стеке резервируешь 32 байта, а sys_read указываешь размер буфера 64 - не хорошо. Добавлено через 1 минуту Что означает "$" в этом синтаксисе? Почему перед отрицательными значениями "$" не ставится?
0
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||
| 10.04.2020, 15:20 [ТС] | ||
|
только я не понял. вы же не на стек пишите.... я просто не знаю fasm. проблема была в том, чтобы писать сразу на стек, в лок переменную . это не удавалось
0
|
||
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
|
| 10.04.2020, 15:22 | |
Сообщение было отмечено pcmax как решение
Решение
Именно в стек. В sys_read в качестве второго параметра передаётся rsp.
0
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|||
| 10.04.2020, 15:26 [ТС] | |||
|
$-это непосредственная адресация. если mov 5, %rax к примеру, то 5 будет рассмотрен как адрес. если $5 то пять будет использованна в команде как константа Добавлено через 2 минуты
1
|
|||
|
Модератор
|
|||||||||||||||||
| 20.04.2020, 12:22 | |||||||||||||||||
Сообщение было отмечено pcmax как решение
Решениеprintf проблемы с поиском конца char[], который Ваш код передал как второй параметр через %rsi
'\0' после считанных символов.
1
|
|||||||||||||||||
| 20.04.2020, 12:22 | |
|
Помогаю со студенческими работами здесь
14
Сохранение изменений, произведённых в функции с переменной, переданной в эту функцию в качестве параметра.
Искать файл, который задан в качестве первого параметра, в каталогах, заданных в качестве остальных параметров Вызов функции внутри другой функции с передачей локальной переменной по ссылке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|