Egor
И так далее.
Egor
По смыслу-то там что-то очень-очень простое происходит, только инструкции слишком низкоуровневые
Matwey
там математика
Egor
Чтобы понять, что делает конкретная инструкция, надо загуглить. Или простись ассемблерным отладчиком по коду и смотреть на регистры.
Matwey
просто сложения вычитания умножения
Egor
Ну, да
Matwey
я не хочу гуглить 80 килобайт асемблерного листинга
kitsu
hex-rays
kitsu
На торрентах есть под винду, прекрасно работает под вайном
Matwey
hex-rays
Так я сегодня днем и подумал, как правильно сказали "что-то простое". и решил применить опенсорсный snowman
Matwey
Ну, раз "простое", то доллжен справиться
kitsu
fpu сложненько декомпилить, snowman не справится
kitsu
ну, впрочем ты и так уже знаешь
Александр
Блин, так хочется оффтопнуть по fpu и реверсу
🦥Alex Fails
Александр
Хотя это не реверс. Вопрос: может ли функция портить fpu стек и за собой не чистить? x86
Egor
Зависит от ABI. На x86 их вроде пруд пруди.
Egor
Скажем, fastcall, stdcall, cdecl, pascal...
Да и на x64 три штуки минимум
kitsu
Egor
Да, sorry
kitsu
вообще мне казалось на amd64 их меньше
kitsu
win & system v
Egor
У system v ещё, кажется, есть разновидность под названием "32-битные указатели в 64-битном приложении"
Александр
pushad
call my_static_func_no_arg
popad
// здесь испортилось одно значение в fpu стеке
И вот первый раз за несколько лет столкнулся с такой проблемой. Код asmjit'овский, если что, но сути не меняет.
Александр
То ли stdcall, то ли cdecl. Но без аргументов не важно, как мне известно.
Рома
else if(i > 100 && cells[i-1].mode == 1 && cells[i-100].mode == 1 )
{
if((a1 = 1 + rand() % 12) != 1)
{
cells[i].DrawC(CP,CPP, WIDTH, HEIGHT,0,147,255,1);
}
}
Рома
по какой причине эта штучка может не выполнятся, если все условия соблюдены
Egor
Условия не соблюдены или есть undefined behavior.
Рома
Олександр
@supapro
Alexander
Matwey
Alexander
просто чето ассемблер какой-то специфичиеский. эт че, контроллер какой-то?
Alexander
ааа
Alexander
блин
Alexander
fmul это же вроде x86 float mul
Matwey
это он и есть
Matwey
x87
Alexander
умножение двух float' ов
Alexander
походу дела)
Anonymous
Так просто, что даже неудобно за такую длинную дискуссию, которая тянулась до этого 🤦🏼♂️
Matwey
так это самое. у меня такого "просто" еще 80 килобайт текста
Matwey
кто возьмется всё обработать?
Anonymous
Ну жизнь не праздная греза))) удачи)))
Alexander
а ну дак садись и разматывай каждую фунцию такую, выписываю в отдельный файл, лучше так же в ассемблере, компилурий и сравнивай результаты. а так хз даже че еще посоветовать - реверс инженрирнг как бе не очень приятная работа
Berkus
kitsu
Тип дефолтного аргумента всегда должен иметь определенный operator=?
Berkus
эээ нет, не должен
Berkus
конструктор перемещения по идее предподчтительней
Andrii
А вообще, при перегрузке операторов допустимы любые прототипы или нет?
Berkus
у операторов есть канонические формы, но принимаются иногда "совместимые" вольности
Berkus
типа передать аргумент по значению а не по константной ссылке
Andrii
а где можно посмотреть канонические формы для всех операторов?
Alexander "SonnySlave"
kitsu
Есть множество функций, которые отличаются одной лишь строкой
Можно ли как-то обобщить это дело темплейтами? Пока остановился на этом: https://ideone.com/qFOlPA
Egor
А зачем шаблоны, если можно просто вынести пролог и эпилог в отдельные функции?
Egor
Или наоборот — вынести общую часть в отдельную функцию, которая принимает функтор и вызывает его внутри себя. Если функтор сделать шаблонным параметром (а не std::function), то наверняка даже заинлайнится
kitsu
Egor
А что за прошлый способ? Я не очень понял, что там в коде подразумевалось
Igor
вопрос к кланго-боярам, с претензией на супапро
куда пнуть clang-format, чтобы он перестал вытворять вот такую дичь? https://puu.sh/yA4uX/1f9aa2df3f.png
при этом если ColumnLimit > 0, то он их вообще начинает в одну строку выстраивать, игнорируя все переносы
Ivan
Igor
если вызвать форматтер вручную и открыть блокнотом, получится то же самое, куча табов + пробелы в конце
Ivan
Ivan
Он регулярками парсит наверное хз и чекает
Igor
я к тому что, студия тут вообще на форматирование не влияет, это какие-то кланговские закидоны
Ivan
А раз регулярками литералы могут быть разные, соотв-нео в настройках студии если таб принять за 2 пробела например мб ок будет?
Ivan
Просто догадки
Ivan
Ivan
Хотя это принципиально странно
Ivan
Ибо количество пробелов
Ivan
Не влияет, токенайзер все равно на этапе компиляции убирает же их
Igor
ещё раз, проблема в том что кланг-формат по какой-то своей причуде решает, что строки с b и d нужно ВНЕЗАПНО выровнять с предыдущими, хотя там должен быть ровно один таб
при этом строки с a1, a2, e, f форматируются норм
не исключаю, что это какой-то баг моей версии, но под рукой только один комп с виндой, сравнить не с чем