Rel, вот мне совсем не смешно. Мы скорбим по знаменитостям, но десятки тысяч безымянных ребят исчезают каждый год. Их матери остаются одни, их друзья несут гробы, а статистика пополняется новыми цифрами. Эмбеддинги дают ложное ощущение, что ты управляешь процессом, но на самом деле процесс управляет тобой... Единственное, что мы можем сделать - это перестать молчать и перестать обелять эту тему. Жизнь одного человека ценнее любого эмбеддинга. Вечная память тем, кого мы не уберегли. И силы - тем, кто продолжает бороться за живых.
who_know777, Простым языком можно описать, что это значит ? Как я понял у этих генератлров чепухи архитектурно урезали RAM, дабы вернуть миллиарды вложений и разгрузить поток бреда. Если прикрутить память и стабильность, все сломается, на бям ресурсов не хватит. > но десятки тысяч безымянных ребят исчезают каждый год. Понял, в игнор. Попей транков.)
Купи недорогой китайский планшет с интеловским процом, воссоединишься с ядром нт и станет не надо этой херней страдать. Мне вспоминается мальчик с синими волосами, который был смешон, но на удивление прав, сделав ллм-агента в виде плугина для иды и пропустив вот это вот, чем ты сейчас занимаешься.
f13nd, Получится ручной реверс, как обычно. При наличии планшета я не создал бы ТТР, все внимание отняли бы кодинг/реверс.
Листинг выше был специально сделан ногами, а не руками. Автоанализ. Руками бы идеально вышло. При желании можно совсем автоматизировать безголовой гидрой. В сравнении с полным отсутствием результата, просто отлично. ЗЫ: ТТР - Топология Топологии Рознь?
f13nd, Робот понимает смысл по дизу, получает алгоритм, смысл переменных например. masm.dwtoa(): Код (Text): void dwtoa_asm_style(unsigned int value, char* buffer) { char* start = buffer; if (value == 0) { *(unsigned short*)buffer = 0x0030; return; } if ((int)value < 0) { *buffer = '-'; buffer++; value = -(int)value; } char* digits_start = buffer; unsigned int magic = 0xCD197935; // 3435973837 while (value > 0) { unsigned int ebx = value; unsigned long long mul = (unsigned long long)value * magic; unsigned int edx = (unsigned int)(mul >> 32); edx >>= 3; value = edx; unsigned int temp = edx; temp = temp * 4 + temp; temp += temp; unsigned int remainder = ebx - temp; *buffer = (char)(remainder + '0'); buffer++; } *buffer = '\0'; // Реверс char* left = digits_start; char* right = buffer - 1; while (left < right) { char temp = *left; *left = *right; *right = temp; left++; right--; } } Код (Text): ПРОЦЕДУРА число_в_строку(число, буфер): ЕСЛИ число == 0: буфер[0] = '0' буфер[1] = КОНЕЦ_СТРОКИ ВЫЙТИ ЕСЛИ число < 0: буфер[0] = '-' число = -число буфер = буфер + 1 начало_цифр = буфер ПОКА число > 0: цифра = число % 10 буфер[0] = '0' + цифра буфер = буфер + 1 число = число / 10 буфер[0] = КОНЕЦ_СТРОКИ # Переворачиваем строку левый = начало_цифр правый = буфер - 1 ПОКА левый < правый: поменять_местами(левый, правый) левый = левый + 1 правый = правый - 1 ВЫЙТИ Код (Text): ФУНКЦИЯ dwtoa(число): ЕСЛИ число == 0: ВЕРНУТЬ "0" ЕСЛИ число < 0: знак = "-" число = -число ИНАЧЕ: знак = "" цифры = "" ПОКА число > 0: цифры = (число % 10) + цифры # добавляем спереди! число = число // 10 ВЕРНУТЬ знак + цифры Код (Text): 1. Если 0 → вернуть "0" 2. Если отрицательное → добавить "-" и взять модуль 3. Пока число > 0: - взять последнюю цифру (число % 10) - добавить её в начало строки - разделить число на 10 4. Вернуть результат Диз это промежуточный этап. Если бы бот мог норм работать, диз или результат декомпиляции был бы ненужен как внутренний этап реверса.