Aiwan \ (•◡•) / _bot
Филипп
Перешёл на NASM...
The Bird of Hermes
Филипп
С FASM.
The Bird of Hermes
С FASM.
Зачем
The Bird of Hermes
FASM лучше
Филипп
Чем лучше?
Филипп
Я так и не понял, как добавить отладочную информацию.
Филипп
А как без неё?
Mixail
ручками, мозгами
Mixail
ну для приличия можно файл символов сгенерить
Aiwan \ (•◡•) / _bot
А как без неё?
так исходник жи есть ☝️
Филипп
Господа, отлаживать без символов — это лишняя когнитивная нагрузка. Она забирает часть внимания, которое можно направить на более полезные занятия. Я не вижу ни одной причины не использовать отладочной информации.
Филипп
ты это судишь из опыта работы с си? ты каждую свою строку пишешь/обдумываешь сам или пользуешься услугами гопоты?
Я имел в виду, скорее, отладку. Просто, нужно отдельно думать о том, где поставить прерывание, где какая процедура начинается, и прочие неудобства. От этого, мне кажется, лучше избавиться.
aschensekt
https://board.flatassembler.net/topic.php?t=20065
aschensekt
Из раза в раз кто-то дебаггер просит, из раза в раз отвечают, что символы не нужны, дебажь мозгом
The Bird of Hermes
Я так и не понял, как добавить отладочную информацию.
Генеришь файл .fas, и ставишь на х64dbg fasmimport расширение
The Bird of Hermes
Он тогда сможет считать символы
Филипп
так делай это прям в коде тогда, если свой же код незапоминаешь int3 int1 nop
Даже если ты запоминаешь, всё-равно пометки в отладчике позволяют не вспоминать, а видеть. Это снижает когнитивную нагрузку.
Филипп
А она при программировании на ассемблере очень высокая.
The Bird of Hermes
Правда не уверен, что x64dbg есть на линьку
Aiwan \ (•◡•) / _bot
А она при программировании на ассемблере очень высокая.
да тебе просто надо думать на асме научиться, привыкнуть
Филипп
Ладно, извините, возможно, я не прав.
The Bird of Hermes
да тебе просто надо думать на асме научиться, привыкнуть
Ага, ага, и макросы не использовать. Ток чистый асм
The Bird of Hermes
😁
Mixail
Из раза в раз кто-то дебаггер просит, из раза в раз отвечают, что символы не нужны, дебажь мозгом
есть файл символов - вернее адресов, через который всё легко отлаживается
Mixail
Ага, ага, и макросы не использовать. Ток чистый асм
так и надо писать, макросы генерят неизвестный тебе код не позволяют использовать самодельные соглашения о вызовах(нарушают условные правила описания вызовов)
The Bird of Hermes
так и надо писать, макросы генерят неизвестный тебе код не позволяют использовать самодельные соглашения о вызовах(нарушают условные правила описания вызовов)
А если написать макросы, которые будут позволять тебе настраивать соглашения о вызовах и вызывать функции автоматически по названию соглашения.
The Bird of Hermes
Или для каких-нибудь regcall руками указать, в какие регистры какие параметры пихнуть
Mixail
в чистом асме всё это и так легко прописывается и намного более оптимально для кода
The Bird of Hermes
а зачем макросы тут?
Как ты там говорил? Руки не обломятся?) А я вот считаю, что обломятся
The Bird of Hermes
И лучше пусть писать код будет комфортно и удобно
Mixail
за комфортно это надо в питон или js идти, там комфорт прям на все 100%
The Bird of Hermes
И могу себе позволить это сделать без ущерба производительности
The Bird of Hermes
Если компилятор позволяет мне писать удобнее, проще и без потери производительности при этом - почему я не должен этого делать?
Mixail
насколько помню у тебя применяется thiscall, что уже не оптимально
The Bird of Hermes
насколько помню у тебя применяется thiscall, что уже не оптимально
Основная платформа у меня х64, там используется fastcall
The Bird of Hermes
Виндовый
The Bird of Hermes
На х86 все было сделано на скорую руку в общем-то
The Bird of Hermes
Mixail
потому что он стандартный и не меняется от ситуации. В асме без макросов можно спокойно и без лишних телодвижений сделать своё соглашение о вызовах, которое будет производить намного меньше лишних действий, когда это возможно
Mixail
с внешними апи конечно стандартные соглашения о вызовах более предпочтительны, а вот внутри программы
Mixail
какая тогда выгода от макроса?
The Bird of Hermes
какая тогда выгода от макроса?
Сокращение количества кода, который тебе необходимо постоянно повторять
The Bird of Hermes
Вместо mov rax, 5 mov rcx, 7 mov rdx, 12 call func Возможно сделать _call func, rax:5, rcx:7, rdx:12
Mixail
и часто в функции передаются только константы ? по мне так очень редко и в основном передаются различные буферы, числа(описывающие что-то, например длина буфера), структуры и тд
The Bird of Hermes
reg:[a], reg:addr a и так далее
The Bird of Hermes
Это можно неограниченно параметризировать
Mixail
Это можно неограниченно параметризировать
смысл от такого? код обычно строится на динамических и неопределённых заранее элементах, тебе в любом случае их надо ещё до вызова функции хранить. Так зачем делать двойную работу?
The Bird of Hermes
Я просто превращаю mov rax, 4 mov rcx, [a] lea rdx, [b] call func В _call func, rax:4, rcx:[a], rdx:addr b
The Bird of Hermes
Я попросту упрощаю себе жизнь, делая вызов функции однострочной операцией
Aiwan \ (•◡•) / _bot
макросы просто превращают "вертикальный" код в "горизонтальный"
Mixail
сможешь через макросы описать что функция может затереть а может и не запереть "аргументы"(по факту просто память под возвращаемые функцией данные) на стеке ?
Mixail
наверное я не так выразился - функция в зависимости от каких-то своих состояний может уменьшить стек после возврата, а может и не уменьшить
Aiwan \ (•◡•) / _bot
наверное я не так выразился - функция в зависимости от каких-то своих состояний может уменьшить стек после возврата, а может и не уменьшить
если это можно написать на чистом асме, значит можно формализовать, а следовательно воплотить в макрос
Mixail
и это не относится к общеупотребимым техникам кодирования
для общеупотребительных техник есть Си, который только на них и работает (если оптимизацию не включать)
Mixail
Это не задача макросов, это комментарии делают
заем тогда макрос нужен если всё равно это ничего не изменит?
Alexey
Зачем задавать вопросы, на которые уже известен ответ?
Aiwan \ (•◡•) / _bot
заем тогда макрос нужен если всё равно это ничего не изменит?
из 60 печатаемых символов организованных вертикально сделать 24, но горизонтально 1 строкой. текст мы читаем горизонтально, что для восприятия мозгом привычней и продуктивней. за 1 строку мы видим ВСЕ, что могли написать, а потом на некоторое время зависнуть для понимания, в 7 строк
Alexey
заем тогда макрос нужен если всё равно это ничего не изменит?
вместо аж 7 строк использовать макросик uses ebx,esi,edi
The Bird of Hermes
заем тогда макрос нужен если всё равно это ничего не изменит?
Превратит код в горизонтальный, как уже ранее сказали, позволит писать меньше символов