The Bird of Hermes
Нет
Не знаешь случаем, нет ли на просторах сети где-либо вменяемых макросов для создания структур и процедур для NASM? Я их конечно сам пишу, но интересно посмотреть на альтернативы
Userfriendly
github com/ rodakalex/ nasm_codewars
Userfriendly
В общем это заточенный под мой проект сишный код со сборкой под nasm
The Bird of Hermes
Погоди, для процедур то зачем? Они без макросов есть
Аргументы функции, соглашения о вызовах, локальные переменные, используемые регистры
The Bird of Hermes
Это конечно не так сложно, как структуры
The Bird of Hermes
Но все же
Oleg
Все есть вроде
The Bird of Hermes
Так а зачем?
Из коробки оно такое же дурнопахнущее, как и структуры
The Bird of Hermes
В смысле?
Ну в плане неудобное и кривое
The Bird of Hermes
Там есть макросы для локальных переменных и аргументов
Oleg
А вот во что я превращаю NASM)
Зачем тебе насм вообще?
The Bird of Hermes
Зачем тебе насм вообще?
Хотел отвлечься от фасма
The Bird of Hermes
Отвлекся)
Oleg
Отвлекся)
Ты ж не на нем пишешь, а на недо насме перед фасме
Userfriendly
А вот во что я превращаю NASM)
Выглядет странновато, но прикольно
The Bird of Hermes
А вот во что я превращаю NASM)
Это чисто на насмовском препроцессоре
The Bird of Hermes
Без чего-либо извне
The Bird of Hermes
Я просто решил имитировать синтаксис FASM, потому что кто меня остановит. А в процессе оказалось, что инлайн вызов процедур сделать достаточно просто.
The Bird of Hermes
Но на моменте с локалками и union-ами я понял, что структуры надо переписать с нуля, эх
Oleg
А вот во что я превращаю NASM)
Кстати, а зачем в конце ендп? Он разве не лишний?
The Bird of Hermes
Кстати, а зачем в конце ендп? Он разве не лишний?
Конечно, он нужен. Затереть все лишнее, что было установлено в макроопределения
The Bird of Hermes
Например, proc перегружает ret так, чтобы он разрушал кадр стека
The Bird of Hermes
Так он же даже не выполнится
Он и не должен, это не инструкция
The Bird of Hermes
Это макрос
The Bird of Hermes
А, т.е рет кастомный?
Рет перегружается внутри процедуры, а потом обратно
Oleg
Это макрос
Можешь его внутрянку показать? Хочу понять как это работает
The Bird of Hermes
Можешь его внутрянку показать? Хочу понять как это работает
Чтобы понять то, что я понаписал, придется долго изучать документацию NASM)
The Bird of Hermes
Так ещё лучше
Ну, я предпредил
CMole
Здравствуйте, я только скачал сасм и пытаюсь написать хоть что-то базовое на насм. Юзаю регистры с 64 бит, но пишет что сасм находится в 32 бит моде, можно его поменять на 64?
Userfriendly
Можно поменять в настройках компиляции
CMole
Зачем тебе sasm?
Посоветовал чел
Userfriendly
Посоветовал чел
github. com/ rodakalex/ nasm_codewars
Userfriendly
Попробуй как-нибудь мою сборку под VS code, там можно без проблем писать под x64
CMole
Спасибо, но я вс код не юзаю
Userfriendly
Нужно поставить флаг компиляции -f elf64
У него IDE за него в настройках это делает
Oleg
В сасме же можно менять флаги компиляции
Oleg
Если не ошибаюсь
Userfriendly
Так везде без проблем можно писать
Не совсем так... я когда emacs пробовал подключить то у меня вечные проблемы были с компиляцией и я опытным путём устал пытаться подключить туда lldb т.к. отладка через gdb не работала
CMole
почему я не могу отправить фото
Userfriendly
В итоге не заработала и на других устройствах
CMole
ладно
Oleg
Которые говорят и кривыми становятся из-за того, что палец постоянно лежит на контроле
CMole
undefined reference to `WinMain' теперь это выдает
Userfriendly
Для емакса нужны очень прямые руки
И много терпения... К тому же, сколько бы я не пытался получить хоть один плагин, у меня никогда ничего не взлетало 🤣
Userfriendly
undefined reference to `WinMain' теперь это выдает
Ты что пытаешься запустить то?
Oleg
Типа нвима/вима
CMole
Ты что пытаешься запустить то?
global _start ; делаем метку метку _start видимой извне section .text ; объявление секции кода _start: ; метка _start - точка входа в программу mov rax, 22 ; произвольный код возврата - 22 ret ; выход из программы
Oleg
Хотя в любом случае теперь нвим юзаю, он мне больше нравится
Userfriendly
example.com
Userfriendly
Хм...
Userfriendly
Попробуй отправить ошибку через обернув код следующими символами: ```
Userfriendly
В конце тоже
CMole
не
Userfriendly
example.com
Userfriendly
Как-то странно работает, ну да ладно
CMole
c:\program files (x86)\sasm\mingw64\bin\..\lib\gcc\x86_64-w64-mingw32\4.8.1\..\..\..\..\x86_64-w64-mingw32\lib\..\lib\libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x25): undefined reference to `WinMain'
Oleg
Погоди
Oleg
Так ты на винде