0x1337 – Telegram
0x1337
291 subscribers
6 photos
9 files
19 links
Y0L0 DUD33333
Download Telegram
У меня есть ключ от многих дверей. Вот что происходит за одной из таких дверей, открытых этим ключом^.

#pwn #zero
Работая с MSVC компилятором / линковщиком, использовать семантику Unix ABI aka SYSTEM V, у вас не получится. Однако, работая с MinGW возможность все же есть, в частности, речь про вызовы функций с внешней компоновкой:

__attribute__((sysv_abi))

- и будет вам счастье!

#interesting #asm #compilers
https://www.agner.org/optimize/blog/read.php?i=1015

Очень крутой пост на тему 'Какой компилятор лучше оптимизирует код в 2К19' от Дядюшки Агнера. Для меня результат предсказуем, а для тебя?

#optimization #cxx #compilers
Небезызвестный тебе журнал Хакер - большую часть времени считался(и, вообще говоря, продолжает считаться) журналом для Домохозяек. Были ли альтернативы? Да! Хардкорные ли? С моей точки зрения - Да! Сами журналы электронные, представляют собой 'Дух и Прах' Underground площадок того времени. Xaoc, def@ced, x25 и многие другие, а почитать можно тут:

http://e-zine-lib.zero-day.ru/lib/

#e-zines #old_school
Знаю, не все из читающих программируют на C++, тем не менее, хотел бы узнать вот что:

Выражение состоящее из Шести подряд идущих точек стало возможным к написанию в...
Anonymous Quiz
13%
Точно в C++11
5%
Точно в C++98
4%
Точно в C++03
16%
Точно в C++17
7%
Точно в C++14
15%
Точно в C++20
40%
Планируют принять в будущих стандартах
Я признателен тем, кто даёт обратную связь. За следующий вопрос, спасибо одному из читателей.

Выражение из скольки подряд идущих точек НЕ может быть представлено в C++:
Anonymous Quiz
11%
1
7%
3
13%
5
7%
4
33%
4 и 5
3%
6
4%
4 и 6
3%
5 и 6
20%
4 и 5 и 6
В ближайшее время я расскажу, почему ответы именно такие, какие они есть. А так же, расскажу о:

- Оптимизационный трюк о котором вы могли не знать:

- Иногда решение всем известных задач, может удивлять. В GCC, кажется, не знают, в boost, тоже. Да и вообще, на простарах сети я ничего подобного не нашёл. Не хочу раскрывать детали и подробности, но поверьте мне, эту задачу, вы наверняка решали и не один раз... Но, скорее всего, не так, как её решил я.

- Тред Пулы или о том, как я JobStealing писал.

- TBB - как много в этом слове... машинных инструкций :) Конечно, любая задача для меня - это challenge, и в данном случае, мне удалось оставить не у дел сам Intel TBB. Хотя... Не в первый раз.

- О переводах чисел с плавающей запятой в строки, и обратно.

- Первые решения этой задачи запросто уходили в десяток тысяч строк кода. У меня есть кое-что получше. Не только у меня, но мне кажется....

- То, что вам могли не рассказать на Лекциях по Аналитической Геометрии.

- Gradients... Gradients...

- Наверное, дорасскажу о JeMalloc, а продолжу - другими Аллокаторами.

- JeMalloc & Co.

- Шейдеры, шейдеры: магия, доступная каждому.

- ...

Наверное, что-то ещё... Уверен :) Нет, знаю!

#coming_soon
🤔1
Ну и говоря о том, куда пропал и почему все вдруг резко встало, замечу:

Честные 100Гбит/Сек с одной сетевой карточки(Mellanox, например) - реальность, даже если papers говорят обратное(да, какие-то части Ядра Linux, можно и переписать...)

#Job
Ну что, вот и объяснительная:

Понятно, что одна точка, это использование оператора '.' или, оператора '.*', например.

Три точки - VA_ARGS Template Parameter Pack или Функции с неизвестным числом параметров(printf, например).

Шесть точек - объединение VA_ARGS Template Parameter Pack и Функций с неизвестным числом параметров. Такой подход находит свое применение в type_trait-е определения функции is_function:

https://en.cppreference.com/w/cpp/types/is_function

И, наконец, самое интересное, это 4 точки:

Выражения свертки(C++17) + оператор '.*'. Да, использовать обычный '.' запрещено, а вот '.*' - можно.

https://en.cppreference.com/w/cpp/language/fold

#answers #quiz
Магические числа в начале того или иного файла, могут использоваться не только для идентификации используемого формата, но и для определения того, в каком порядке байт(little / big endian) была произведена запись файла, то есть, в каком порядке нам следует его читать. За примером далеко ходить не надо: *.pcap, например.

#magic_numbers
В GCC, кстати, можно #include (7 символов, без учёта решётки) заменить на #import (6 символов, без учёта решётки). Краткость сестра таланта, ведь так?

https://wandbox.org/permlink/ieB5oMwoPql0JGkd

#gcc #extension
А ещё в GCC можно писать вот так:

x ? : y, что равносильно x ? x : y

#gcc #extensions
Окей, задавать вопросы по С++ можно вечно, а что на счет Интересных Решений из той же серии :?

Дано:

struct bar 
{
bar() { std::cout << "bar deft ctor\n"; };
bar( bar&& ) { std::cout << "bar move ctor\n"; };

bar( const bar& ) = delete;
};

template<class T>
const T foo(); // где-то в другой библиотеке, которую мы менять не можем

bar buz()
{
return foo<bar>();
}

int main()
{
auto a = buz();

return 0;
}

Менять foo и bar - не можем. Как вызвать move, не поломав ничего в программе и не используя C++17 :?

С Флагом C++17 - это будет работать прекрасно!
Окей, томить с решением я не стану. Вообще, не знал как выстроить наше с вами общение по этому вопросу. Предлагаю вот такое вот интересное решение:

struct bar
{
bar() { std::cout << "bar deft ctor\n"; };
bar( bar&& ) { std::cout << "bar move ctor\n"; };

bar( const bar& ) = delete;
};

struct bar_wrapper
{
mutable bar wrapped_bar;
};

template<class T>
const T foo(); // где-то в другой библиотеке, которую мы менять не можем

bar buz()
{
return foo<bar_wrapper>().wrapped_bar;
}

Как мне кажется, получилось весьма интересно и красиво. Это то, ради чего затевался пост выше и никак иначе. Я бы назвал этот промежуточный Wrapper - мутатором.

#cxx #interesting
Эффективное_программирование_на_платформе_Эльбрус.pdf
1 MB
Эффективное программирование на платформе Эльбрус.

#Эльбрус #optimization
Primer_on_reversing_symbian_s60_applications_by_shub_nigurrath_v14.pdf
4.4 MB
Работы вагон, того и постов нет. Но я тут это, про Symbian S60 накинуть хотел: как никак, а OS легендарная. А посты будут совсем скоро, да.

#reverse #symbian #asm
Я люблю Data-Oriented Design, а еще люблю C. ECS и GUI? Почему бы и нет:

https://dl.acm.org/doi/pdf/10.1145/3286689.3286703

#ECS #DOD
Так, и ошибка у нас в ...

struct A
{
unsigned int m_a = 1337u;
};

int main()
{
static_assert( std::is_invocable<decltype( &A::m_a ), A>::value ); // 1

std::invoke( &A::m_a, A() ); // 2

return 0;
}