Andrew
А зачем битовые сдвиги? #topic #zerobuffer #asm #cpp
shr ecx, 2 ;ecx == len/4 sub edx, ebx ;edx == остаток после len/4
🦥Alex Fails
Я б еще sse2 прифигачил
🦥Alex Fails
Ну и авх
Andrew
ну я просто вообще вспоминал асм, уже год его не трогал)
Andrew
ну вроде похоже на ZeroMemory
Artem
ну не очень похоже на функцию, если честно
Artem
функция обычно бывает с аргументами, а не с данными в .data
Artem
и получает свои аргументы по какому-нибудь соглашению вызовов, например, cdecl
Andrew
ну не очень похоже на функцию, если честно
нуу если надо функцию то .model flat,stdcall ZeroMemory PROTO :DWORD,:DWORD .code ZeroMemory proc uses edi ecx edx ebx loc:DWORD, len:DWORD mov edi, loc mov edx, len xor eax, eax mov ecx, edx shr ecx, 2 mov ebx, ecx shl ebx, 2 sub edx, ebx rep stosd mov ecx, edx rep stosb ret ZeroMemory endp end
Andrew
так вроде больше похоже но возможно ошибся где
Andrew
писал не проверяя код
Berkus
my_len => len my_lo => loc
Berkus
в принципе, вполне себе zeromemory если слишком быстро не надо
Berkus
ключики обычно до 256 байт длиной, скорость не так важна
Andrew
кстати есть тут кто кто умеет расшифровывать трафик?
Berkus
mitm proxy могут
Berkus
https://www.charlesproxy.com
Andrew
а кто знаком c l2phx? просто когда-то читерил чет там понимал сейчас забил чет а уже весь трафик у всех шифрованый
Andrew
Alexey
https://www.charlesproxy.com
оно платное
Alexey
на винде есть Fiddler (http://www.telerik.com/fiddler)
Крылатый
Годная шняга, кстати
Alexey
а кроссплатформенное OWASP ZAP (https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)
Alexey
они оба хороши
Berkus
они все хороши
🦥Alex Fails
Я вайршарком ебал
Kirill
Я вайршарком ебал
Все так делают)
Stanislav
берешь вайршарк, если неизвестный трафик, начинаешь писсать диссектор на луа)
Surreal
void process_message(int x) { switch (x) default: if (valid_command_message(x)) case CMD1: case CMD2: case CMD3: case CMD4: process_command_msg(x); else if (valid_status_message(x)) case STATUS1: case STATUS2: case STATUS3: process_status_msg(x); else report_error(x); } Забавно. https://blog.feabhas.com/2017/02/abusing-c-switch-statement-beauty-eye-beholder/
Surreal
Запутанный код легко читается тестами.
Vladislav
иногда код читают чтобы внести в него изменения
Surreal
О, это да. Реликт, написанный черной ручкой на черной бумаге в темноте, который дописывали черной краской широкой кистью и выдерживали затем в угольной шахте, представляет собой шикарный образец наследия, оставленного нам нашими предками - первобытными программистами.
Surreal
Проблема в том, что часто приходится дополнять подобные артефакты своим пером. Каким бы изящным не был почерк, это все те же черные чернила поверх черной бумаги. Далеко не все готовы тратить время на то, чтобы разобраться и переписать все нормально. Да и из песни слов не выкинешь: перепишешь, а что-нибудь где-нибудь поломается; вернешь все обратно и останется только жалеть о потраченном времени.
Andrei
Есть другая. Называется код производит сайд-эффекты.
Andrei
Надо явно указать что все сайд эффекты кода должы быть вычилены к такой-то точке.
Berkus
Нет такой спецификации.
Вот поэтому секьюрный мемсет на сях и невозможен.
Vladislav
в виндах есть SecureZeroMemory
Vladislav
а еще memset_s http://en.cppreference.com/w/c/string/byte/memset
Vladislav
"This optimization is prohibited for memset_s: it is guaranteed to perform the memory write."
Berkus
воот!
Berkus
и оно появилось только в с11, потому что секьюрный мемсет на сях невозможен
Berkus
> memset_s is only guaranteed to be available if __STDC_LIB_EXT1__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__ to the integer constant 1 before including string.h. #takoe
Vladislav
а c11 - это уже не c?
Dr. Friedrich
Он имеет в виду, что секурный мемсет невозможен в C без явной договорённости между библиотекой и компилятором.
Dr. Friedrich
Ну т.е. любой мемсет, который ты напишешь, будет априори несекурным.
Dr. Friedrich
А если авторы компилятора написали — тогда норм.
Berkus
именно это я и имею в виду, спасибо!
Andrey
HR?
✙ Fatum ✙
а у vallarray есть методы копирования из одного valarray в другой? а то я циклом все делаю по старинке
Max
help Кто собирал на винде буст пайтон?
Max
тыкаю следущее b2 --build-type=complete --with-python stage получаю следущее Performing configuration checks: -32 bit : yes
Max
Директории stage с либами соотвественно нету
Max
path к пайтону указан
Artem
std::copy скорее всего сведется в реализации к тому же циклу, нет?
Berkus
ага, только не ручками. ну и там зависит дальше, std у тебя или parallel_std или вообще какой-нибудь amp
✙ Fatum ✙
std::copy например?
а имеет смысл? по перфомансу там.. я нуб в мире крестов)
Artem
ну хотя если вопрос про наличие метода, то да.
Berkus
ну не хуже ручного цикла будет всяко
Berkus
там скорее всего будет оптимизация до memcpy для PODs
Stanislav
In practice, implementations of std::copy avoid multiple assignments and use bulk copy functions such as std::memmove if the value type is TriviallyCopyable
Artem
будет ли?
Artem
а
Artem
хорошо
Berkus
вот выше читай, будет
Surreal
А есть ли смысл в std::copy, когда есть: valarray<T>& operator=( const valarray<T>& other );
Artem
А есть ли смысл в std::copy, когда есть: valarray<T>& operator=( const valarray<T>& other );
если не один в один копировать, а например слить несколько в один, то есть
Andrey
valarray и итераторов-то своих не имеет
Andrey
кроме как в 11 std::begin и std::end юзать
✙ Fatum ✙
valarray и итераторов-то своих не имеет
я его использую из-за необходимости обрабатывать оч большие файлы с числовыми значениями(сенсорсные данные с андроид у-ва)