Искандер
стоп... или я что-то путаю...мм
s54820
Это Сишная, из libc. =)
В Си это либо переменная типа int, либо макрос, который разворачивается в выражение, получающее адрес errno из TLS.
Искандер
Есть подозрение что это очень дельное замечание... возможно это и не функция-то вовсе.... Очень благодарен!!!!
Искандер
Я дебил... нужно было вызвать функцию error()
Искандер
Проблему это, впрочем, не решило. Всё так-же "Address boundary error".
Но это очень дельно, спасибо.
Я бы сам точно не заметил и никуда не продвинулся был.
Eugene
А зачем rsp в стек кидать?
Eugene
Ещё забавляет
xor rax,rax
pop rax
:)
Искандер
Спасибо, я исправлю, однако когда дебажу до туда и не доходит собственно. Ошибка примерно при вызове error и происходит, уже внутри
Искандер
Искандер
global _ft_write
_ft_write:
push rbp
mov rax, 0x2000004 ; adress of <write> syscall
syscall
jnz error
pop rbp
ret
error:
call _perror
pop rbp
ret
Сейчас примерно вот так выглядит код. Соответственно jnz после syscall, как я понимаю не особо имеет смысл, без обёртки, верно?
Искандер
test rax,rax?
Aiwan \ (•◡•) / _bot
Jcc работает с флагами. чтоб они были выставлены нужно использовать команды которые меняет флаги. в твоем случае, если ты говоришь что нужно сравнить байты, то лучше подойдет cmp. cmp сравнивет что то с чем то. и вот эти данные нужно поместить в операнды самой cmp. как эти операнды получить - тебе лучше знать
Искандер
Спасибо!
Aiwan \ (•◡•) / _bot
так а что надо сравнить то?
Aiwan \ (•◡•) / _bot
что за инфа возвращается syscall?
Искандер
Вот это и пытаюсь выяснить. По сути номер ошибки должен возвращаться, нашел на Stackoverflow вопрос, там ребята говорят, что в *ax номер ошибки лежит.
По сути теперь его просто в rdi переложить и вызвать perror, а он его напечатает уже.
Aiwan \ (•◡•) / _bot
perror печатает определенное тобой сообщение, в параметрах у этой функции указатель на asciiz строку. но можешь это уточнить в манах
Aiwan \ (•◡•) / _bot
ну я думаю perror используют чтоб детектировать выполнение сишных функций, а не системных
Сергей
Всем привет! Напишите must read список книг по асму, для старта и по возрастающей
Сергей
А может такой список уже кидали тут
Anonymous
mov ebx,rmem
fxsave [ebx]
сделал выравнивание по 16
пробовал даже делать так shl ebx,4
ругается все равно
mov ebx,rmem
fxsave [ebx]
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
а что fxsave делает?
електр🟢нік ✙🟠рчбеч ඞ
Anonymous
при выполнение fxsave меня выбрасывает в другую область памяти eip меняется
Vladimir
Vladimir
И кто ругается?
Anonymous
я под отладчиком запустил и меня выбросило в память куда должно сохраниться состояние
Vladimir
Anonymous
Anonymous
я выделил сделал align 16
Anonymous
section '.bss' readable writable
align 16
mem rb 512
Vladimir
Anonymous
никакое просто перешло по адресу
Anonymous
mem
Anonymous
нет оно не перекидывает а очищает секцию кода на размер 512
Anonymous
странно
Anonymous
Я разобрался ошибка была глупая от невнимательности
Сергей
Сергей
Норм для старта?
Danil
Нет, потому что литература на русском, да и какую вы цель ставите ?
Eugene
Я разобрался ошибка была глупая от невнимательности
Народ, вы когда вопросы задаете, информацию давайте подробную.
Исходники (ссылкой) полностью (отдельно указывая на область ошибки, разумеется), текст ошибки полностью (включая номер строки), что происходит конкретно и подробно.
Или вы думаете, тут телепаты сидят?
На что вы рассчитываете, так формулирую вопросы?
Eugene
Eugene
Сосед пьяный ругается матом за стенкой что ли?
електр🟢нік ✙🟠рчбеч ඞ
скорее всего забыл ptr
Eugene
Danil
Сергей
так там автор русскоязычный изначально
Eugene
Мне, на самом деле, всегда сложно порекомендовать какую-то книгу. Потому что сам учился по разным докам, справочникам, статьям, начиная с тех времён, когда ещё интернета не было (да что там, же винда не была популярна — Dos Navigator).
Потом появились форумы, что-то можно было забить в поисковиках.
Из книг именно по асму помню только Юрова (причём, помню книгу, а не содержание). Вообще даже не помню, с чего начинал, вероятно с асм-вставок в паскале :)
Обычно всегда (и до сих пор) происходило так: ставилась задача, в процессе реализации искались ответы на возникающие вопросы. Ну и параллельно что-то изучается. И тут список материалов бесконечный, наличная с манов Intel SDM, книг по устройству ОС, оптимизации, железу и заканчивая статьями, в т.ч. случайно попавшимися и заинтересовавшими.
Так что, я думаю, можно взять для затравки какую-то более или менее свежую книгу (типа Аблязова, хотя за качество не ручаюсь) и покурить, а дальше в добрый путь :))
Я составлял год-два назад список полезных ссылок с софтом, доками, названиями книг и т.д. Но читал я их этого, кончено, не всё. Если кому надо, скину (хотя уже кидал).
Eugene
А, ещё изучение чужих исходников — тоже вещь полезная.
Eugene
Совсем свежих книг вроде и нет. А в тех, что переиздаются, просто год меняется, а текст — нет.
Eugene
Если у кого есть классные книги последних лет (не 10-ти, конечно) — кидайте. Можно на англ.
Кстати, дока по фасму — отчасти годная «книга». Там и синтаксис фасма, и инструкции худо-бедно описаны. Хотя про устройство памяти, функционирование ОС, биты всякие не описано, вроде как совсем.
електр🟢нік ✙🟠рчбеч ඞ
я начинал учить асм с книжки "nasm for unix"
електр🟢нік ✙🟠рчбеч ඞ
но хотел бы поделиться наблюдением своим. микроконтроллеры мне всегда давались гораздо легче, потому что у них проще организация и можно весь процессор держать в голове (тот же AVR). с них можно научиться таким базовым вещам, к которым на х86 ты будешь приходить долго и больно. поэтому всегда рекомендовал бы начать с них.
Eugene
Вообще, действительно, хорошо бы для начала определиться с платформой (процессоры, ОС), под которую собираешься писать. Это ж не Си :)
Vladimir
Мне, на самом деле, всегда сложно порекомендовать какую-то книгу. Потому что сам учился по разным докам, справочникам, статьям, начиная с тех времён, когда ещё интернета не было (да что там, же винда не была популярна — Dos Navigator).
Потом появились форумы, что-то можно было забить в поисковиках.
Из книг именно по асму помню только Юрова (причём, помню книгу, а не содержание). Вообще даже не помню, с чего начинал, вероятно с асм-вставок в паскале :)
Обычно всегда (и до сих пор) происходило так: ставилась задача, в процессе реализации искались ответы на возникающие вопросы. Ну и параллельно что-то изучается. И тут список материалов бесконечный, наличная с манов Intel SDM, книг по устройству ОС, оптимизации, железу и заканчивая статьями, в т.ч. случайно попавшимися и заинтересовавшими.
Так что, я думаю, можно взять для затравки какую-то более или менее свежую книгу (типа Аблязова, хотя за качество не ручаюсь) и покурить, а дальше в добрый путь :))
Я составлял год-два назад список полезных ссылок с софтом, доками, названиями книг и т.д. Но читал я их этого, кончено, не всё. Если кому надо, скину (хотя уже кидал).
Тогда ещë была довольно популярная серия "Библиотека системного программиста" Фроловых. На безинетье была вполне даже ничего.
Aiwan \ (•◡•) / _bot
Eugene
Искандер
Друзья, а почему у некоторых extern функций одни\два нижних подчеркивания а у других три?
_puts
_perror
___error (три)
Aiwan \ (•◡•) / _bot
Искандер
Отредактировал :)
Aiwan \ (•◡•) / _bot
👍
JeisonWi
https://gpfault.net/posts/asm-tut-1.txt.html
Dmitrij
Eugene
Что тут странного? Для асма это вполне естественно. Мне кажется, макросы завезли раньше, чем мы все под стол ходить начали.
Dmitrij
У меня метапрограммирование больше ассоциируется с шаблонным програмированием (с++), так что наверное я удивился преждевременно и тому, что существует только в моей голове. С макроассемблером (макрописание) я знаком в GNU ASM, в fasm'e интересная реализация всего этого - реально красивый подход. Когда я выбирал какой asm учить, выбрал GAS только потому, что он почти на всех платформах присутствует. Иногда, представляется возможность подсмотреть что да как в других асмах (ну к примеру вот эту ссылку кинули), и реально красивые решения встречаются ))
Взять тот же макрос invoke в примерах для FASM, я подсмотрел(увидел) и запилил для GAS, ну правда ещё в сыром виде (не тподдержки флоатов в аргументах и регистров)...
Eugene
В FASM можно писать программы чисто на макросах. В силу наличия virtual, load, store.
Т.е. можно сделать шифровальщик, пакер, парсер, выдёргиватель каких-то данных, конвертер и многое другое...
Eugene
Генерить всякие данные — само собой.
Eugene
Т.е. запускаешь fasm и на выходе получаешь не бинарник скомпиленной программы, а результат работы программы на макросах.
Я в пределах предыдущих 2-х недель писал как раз несколько вещей в стиле "перевести 16-битный WAV в ADPCM", "взять BMP и сгенерить файл с палитрой и файл с картинкой (с разбивкой по битовым плоскостям для EGA)", "вытащить упакованные данные из сжатой UPX'ом проги", "сгенерить таблицу с палитрой возможных цветов для EGA"...
Есть примеры AES-кодирования файла :)
Мощная штука на самом деле!
Dmitrij
Евгений, спс за инфу !