- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
void decode_chunk(const char* s, uint8_t* out)
{
__m128i a = _mm_loadu_si128((const __m128i*)s);
__m128i u = _mm_and_si128(a, _mm_set1_epi8(0x74));
u = _mm_add_epi8(u, _mm_set1_epi8(0x04));
u = _mm_srli_epi32(u, 0x03);
u = _mm_and_si128(u, _mm_set1_epi8(0x0F));
u = _mm_shuffle_epi8(_mm_set_epi32(0xB9B9B9B9, 0xBFBFBFBF, 0x04041013, 0x00000000), u);
a = _mm_add_epi8(a, u);
__m128i m1 = _mm_set1_epi32(0xFF00FF00);
__m128i m2 = _mm_set1_epi32(0xFFFF0000);
a = _mm_shuffle_epi8(a, _mm_set_epi32(0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F));
a = _mm_or_si128(_mm_srli_epi32(_mm_and_si128(m1, a), 2), _mm_andnot_si128(m1, a));
a = _mm_or_si128(_mm_srli_epi32(_mm_and_si128(m2, a), 4), _mm_andnot_si128(m2, a));
a = _mm_shuffle_epi8(a, _mm_set_epi32(0x80808080, 0x00010204, 0x05060809, 0x0A0C0D0E));
_mm_storeu_si128((__m128i*)out, a);
}
Байтоёбский парсинг base64 (16 символов → 12 байт).
По мотивам http://govnokod.ru/12822#comment173404
bormand 09.01.2019 22:03 # −2
HoBorogHuu_nemyx 10.01.2019 00:38 # +1
bormand 10.01.2019 00:44 # +1
HoBorogHuu_nemyx 10.01.2019 00:52 # −1
guest8 10.01.2019 00:58 # −999
bormand 10.01.2019 01:01 # −1
guest8 10.01.2019 01:04 # −999
bormand 10.01.2019 01:13 # −2
Goh 10.01.2019 01:52 # −1
Что-то мне подсказывать, что кофе надо было пить ни до, ни после, а вместо.
Сечёшь, пидар?
gpyrou_nemyx 10.01.2019 10:14 # +2
Я только за.
gpyrou_nemyx 10.01.2019 10:09 # +2
Не надо рассуждать о читаемости кода на языке, которого не знаешь.
gpyrou_nemyx 10.01.2019 10:03 # +1
OlegYch 10.01.2019 01:29 # −1
Ебанавт.
Hu3KoypoBHeBblunemyx 02.03.2019 09:04 # 0
ASD_77 24.01.2019 17:46 # 0
bormand 24.01.2019 17:59 # +1
u3yMpygHblu_nemyx 24.01.2019 18:02 # +2
guest8 24.01.2019 18:12 # −999
u3yMpygHblu_nemyx 24.01.2019 18:16 # +1
Чорт! Проговорился.
guest8 24.01.2019 18:18 # −999
bormand 24.01.2019 18:38 # +1
guest8 24.01.2019 18:41 # −999
u3yMpygHblu_nemyx 24.01.2019 18:46 # 0
Вот деление на ноль –— это исключение. Оно детерминировано: каждый раз, когда мы пытаемся делить на ноль (или когда при делении возникает переполнение), срабатывает исключение. С другой стороны, само по себе оно сработать не может.
А вот событие нажатия на клавишу —– это прерывание. Мы заранее не можем предугадать, в какой момент времени юзер нажмёт клавишу.
guest8 24.01.2019 18:55 # −999
bormand 24.01.2019 18:56 # 0
u3yMpygHblu_nemyx 24.01.2019 19:00 # 0
guest8 24.01.2019 19:14 # −999
u3yMpygHblu_nemyx 24.01.2019 19:24 # +1
bormand 24.01.2019 18:53 # +1
u3yMpygHblu_nemyx 24.01.2019 18:48 # 0
bormand 24.01.2019 19:00 # 0
u3yMpygHblu_nemyx 24.01.2019 19:47 # 0
guest8 24.01.2019 21:27 # −999
JIyHHblu_nemyx 27.01.2019 02:15 # 0
Офигеть, его выложили в «Ютуб». Надо будет пересмотреть.
guest8 24.01.2019 19:10 # −999
Rooster 24.01.2019 19:07 # +3
0 —– позовут при лелении на ноль
3 –— беркпонт
5 —– принт скрин/бонд
9 —– что-то связанное с клавиатурой (помоему, зовётся при ножатии клавешы)
10 –— видио хуйня
13 —– раьота с письками
16 –— получить код ножатой клавешы(ah = 0)/узнать, ножата ли клавеша и т.п.
20 —– выдох из программы
21(22,23,...? я ими не пользовался, но помоему есть) —– функции дос
29 –— вывести символ в al на ыкран
33 —– мыш (ax=0,1,2,3 —– инициалищация, показать, скрыть, получить сосояние)
40 —– сиськи оли в КолибриОС(?)
80 –— лунтикс
Насколько я ёбнутый?
guest8 24.01.2019 19:13 # −999
Rooster 24.01.2019 19:17 # 0
guest8 24.01.2019 19:21 # −999
u3yMpygHblu_nemyx 24.01.2019 19:21 # +1
0, 3, 5 –— энто исключения (тут вроде понятно, почему).
9 наглухо привязано к IRQ1 –— это прерывание (к IRQ0...IRQ7 привязаны соответственно INT 8... INT 0F). IRQ с большими номерами засунуты в какую-то жопу (что-то типа INT 70h, уже точно не помню).
То, что выше 0Fh –— это программные прерывания.
Кстати, функция ah=0 у INT 16h не работала с клавишами F11, F12 и прочими, которых нет на IBM XT. Для полноценной работы с клавиатурой нужно было звать ah=10h.
Сейчас ещё что-нибудь вспомню...
INT 31h –— DPMI. Это чтобы выделять память из программ зощищённого режима.
INT 28h —– фоновое прерывание для кооперативной многозадачности.
INT 15h –— функции PS/2, которые позже были задействованы в рахит-тинктуре ATX.
bormand 24.01.2019 19:22 # 0
Куда ремапнешь там и будут.
guest8 24.01.2019 19:27 # −999
u3yMpygHblu_nemyx 24.01.2019 19:32 # +1
На текущий момент ты здесь самый ебанутый.
guest8 24.01.2019 19:39 # −999
1024-- 24.01.2019 19:57 # 0
В библиотеках можно всё замазать константами, в JS - и вовсе в клиентский код не допускать чисел:
ASCII-коды наверно останутся как последняя питушня, которую скорее всего так просто от программиста не скроешь. Как минимум, на клавиатуре через Alt набирать придётся.
А придумают ли что-то новое для задротов, чтобы числа запоминали?
guest8 24.01.2019 20:01 # −999
Rooster 27.02.2019 19:06 # 0
Rooster 24.01.2019 19:15 # +2
HoBblu_nemyx 01.03.2019 18:13 # 0
cmepmop 01.03.2019 19:03 # +2
HoBblu_nemyx 01.03.2019 20:47 # 0
CHayT 01.03.2019 20:50 # 0
guest8 01.03.2019 20:52 # −999
guest8 01.03.2019 20:54 # −999
bormand 02.03.2019 08:01 # 0
А может и подумали, но пирфоманс на тот момент показался важнее...
guest8 02.03.2019 10:59 # −999
guest8 02.03.2019 14:14 # −999
guest8 01.03.2019 20:55 # −999
bormand 02.03.2019 08:08 # 0
Hu3KoypoBHeBblunemyx 02.03.2019 09:01 # +1
bormand 02.03.2019 09:08 # +1
Сделай свой проц с микрокодом и пиши на нём. Хотя, если ты можешь делать проц, то нафиг тебе микрокод? Лишняя абстракция.
Hu3KoypoBHeBblunemyx 02.03.2019 09:26 # 0
bormand 02.03.2019 09:47 # 0
Но мне кажется, что ничего принципиально нового там не запилить. Разве что какую-то более эффективную инструкцию удастся сложить из кусков других.
Hu3KoypoBHeBblunemyx 02.03.2019 12:50 # 0
https://securiteam.com/securityreviews/5FP0M1PDFO/
> ничего принципиально нового там не запилить
Ну почему? Вот, например, установка хука на ассемблерную инструкцию из "JavaScript":
https://hsto.org/r/w390/webt/gx/af/w9/gxafw9lfzweuvhrirvuwf_qfbu0.png
(Лол, это реально работало? Какой багор))))
Hu3KoypoBHeBblunemyx 02.03.2019 13:07 # 0
Картинка отсюда: https://m.habr.com/ru/post/427757/
А источник:
Philipp Koppe. Reverse Engineering x86 Processor Microcode // Proceedings of the 26th USENIX Security Symposium. 2017. pp. 1163-1180.
Надо бы читнуть.
ЗЫ. что значт "use asm"?
Hu3KoypoBHeBblunemyx 02.03.2019 13:18 # +2
bormand 02.03.2019 13:24 # 0
Сделай себе проц, который напрямую исполняет шитый код. Вроде ничего сложного, если под FPGA.
Hu3KoypoBHeBblunemyx 02.03.2019 16:12 # 0
Какое-то говно, накостыленное поверх js.
guest8 02.03.2019 16:18 # −999
nEPBO6blTHblu_nemyx 02.03.2019 16:43 # +1
Значит, я не ошибся. В «K6» никакого микрокода нет, именно поэтому я за «K6».
guest8 02.03.2019 16:45 # −999
qpjll-oc 02.03.2019 18:27 # −102
nEPBO6blTHblu_nemyx 02.03.2019 13:59 # +1
На AMD первые обновлялки появились позже. Для K7?
guest8 02.03.2019 14:13 # −999
bormand 02.03.2019 14:18 # +1
bormand 02.03.2019 14:19 # +1
Вполне документированное, проверь. Все операционки его юзают.
А вот формат самого блоба - да, не документирован.
guest8 02.03.2019 14:35 # −999
a0a1 11.12.2019 00:09 # 0
YxaHbckuu_nemyx 13.02.2020 12:28 # 0
gost 13.02.2020 12:36 # 0
TOPT 13.02.2020 12:36 # 0
gost 13.02.2020 12:38 # 0
TOPT 13.02.2020 12:39 # +1
YxaHbckuu_nemyx 13.02.2020 12:40 # 0
TOPT 13.02.2020 12:47 # 0