Hacker News Digest

Тег: #assembly

Постов: 2

Show HN: XR2000: A science fiction programming challenge (clearsky.dev)

XR2000 — новый программистский квест в жанре научной фантастики.
Он объединяет бинарные протоколы, криптографию и развёрнутый сюжет, который пока охватывает лишь первую главу. Дальнейшее зависит от интереса участников.

Вдохновение дали:

  • TIS-100 — псевдоассемблер в игровой форме.
  • Space Traders — космическая торговля через REST API.
  • Protohackers — челленджи по сетевым протоколам.

Старт:

nc clearsky.dev 29438

Приятного погружения!

by richmans • 12 августа 2025 г. в 06:07 • 89 points

ОригиналHN

#assembly#networking#tcp#cryptography#restapi#science-fiction#clearsky.dev

Комментарии (14)

  • Участники делятся ссылкой на похожий Sci-Fi-контест 2006 года, где нужно писать собственную VM.
  • Появился новый TCP-пазл на clearsky.dev:29438; при подключении требуется отправить 0-байт + «XR2K» для документации.
  • Сервер перегружен HN, поэтому текст иногда не выводится или после команды ничего не происходит.
  • Некоторые пробуют использовать LLM для упрощения игры.
  • Один из игроков ждёт ответа «Colonel Arhci» по atlantiamail.

Going faster than memcpy (squadrick.dev)

Как обогнать memcpy

Профилируя Shadesmar, увидел: при больших (>512 КБ) сообщениях 97 % времени уходит на memcpy между процессной и разделяемой памятью. Решил ускорить копирование.


Разбор memcpy

perf показал:
__memmove_avx_unaligned_erms — это memcpy через memmove, AVX, 32 байта за раз, поддержка не выровненных блоков и ERMS (железный цикл REP MOVSB).

  • memmove выбран, т.к. допускает перекрытие.
  • Для <4 КБ используется SSE2, иначе — REP MOVSB + AVX.
  • Не-временные (NT) инструкции и prefetcht0 уменьшают кэш-промахи.

Способ 1: простой REP MOVSB

void _rep_movsb(void *d, const void *s, size_t n) {
  asm volatile("rep movsb"
               : "=D"(d), "=S"(s), "=c"(n)
               : "0"(d), "1"(s), "2"(n)
               : "memory");
}

Тот же цикл, что и в glibc, но без лишней логики.

by snihalani • 11 августа 2025 г. в 04:59 • 125 points

ОригиналHN

#c#assembly#performance-optimization#memory-management#avx#sse2#inter-process-communication#zero-copy

Комментарии (63)

  • Часть выгоды даёт отказ от лишнего копирования: часто данные можно использовать на месте.
  • Несколько участников отмечают, что без контроля кэшей и правильной сериализации бенчмарки теряют смысл.
  • График в конце вызывает сомнения: скачки пропускной способности выглядят неправдоподобно.
  • Для IPC обсуждают zero-copy через размещение данных сразу в shared memory (Iceoryx, Boost.Interprocess, DPDK).
  • Большинство сходится к выводу: для обычных задач лучше довериться стандартному memcpy/std::memcpy, особенно в glibc.