Чтобы добавлять сообщения и комментарии, .

@lurker:
lurker

Бессонная ночь. Компиляю эмскриптен из исходников, т к релизная версия падает при попытке собрать веб ассамблею. Которая, в отличие от асмжс, обещает ложить хуй на выравнивание памяти и, т о, эта сраная сипипишная либа, возможно, будет работать корректно.

@qnikst:
qnikst

какие похожие программы и какие разные результаты.

* paste.pound-python.org
* paste.pound-python.org

опять лезть в RTS :/

@lurker:
lurker

ну и в конце дня: автор (вроде) embind говорил (в 2014) что в const std::string& можно передать ArrayBuffer. оно, конечно, можно, но только при этом если в ArrayBuffer текст, то всё норм, а если нет — не работает.

@lurker:
lurker

получаешь, значит, какой-то мусор вроде implicit declaration of function 'lseek' is invalid in C99, вбиваешь его в гугель, попадаешь в гитхаб багу совершенно левого проекта, и там какой-то перец исправляет это внесением пары строк в gzguts.h разумеется, в апстриме об этом фиксе никто не слышал. и вот что бы я делал без гугеля.

@L29Ah:
L29Ah

long data_len_s = ftell(f);

215 if (data_len_s < 0) {
(gdb)
220

(gdb) p data_len_s
$1 = 9223372036854775807


ШТО

@qnikst:
qnikst

Есть программа (RTS), которая может создавать треды в разные странные моменты обычным pthread_create . Есть специальный superduper_thread_create, который создает нужные мне треды, но взять и перевести на него RTS неполучится (лень). Так же есть так же специальный метод, который позволяет конвертировать обычный posix тред в superduper тред.

Вопрос, есть ли какие-либо средства для автоматизации вызова функции конвертации треда в специальный после вызова pthread_create

@OCTAGRAM:
OCTAGRAM

«Под Куполом» спонсировался Microsoft, и поэтому там у всех виндопланшеты с Windows 8. А в S02E08 хакер ломает комп, и что же на компе? Неужели тоже винды? Да, винды. Седьмые.

Но в восьмёрке–то все сишные и плюсовые компоненты переписали на Аде, такой Windows хакеры бы не сломали, уж конечно

@waterlaz:
waterlaz

Нашел в OpenCV вот такие вот грязные хаки:

return (int)(size_t)(void*)pthread_self();
Ну и, конечно, это не работает со всеми версиями libc //_-

@Strephil:
Strephil

LO в очередной раз dumped core. В логе много про pthread.
Хм, я думал, LO на крестах написан.
Тогда понятно, почему всё время валится, слыханное ли дело, pthread.

@dluciv:
dluciv

pp.vk.me

@L29Ah:
L29Ah

CompCert нынче искаропки может собрать FreeRTOS или ChibiOS?

@RA:
RA

Нужна помощь знающих людей по си. Есть php расширение
github.com
оно преобразует массив в dom-документ. Но иногда вылетает "recursion detected", см строку 196. И я не знаю почему это могло бы происходить.
Тут может ещё скил в php расширениях нужен.

@Strephil:
Strephil

21st Century C, 2nd Edition
C Tips from the New School
Use Autotools, C’s de facto cross-platform package manager
Бля.

@Strephil:
Strephil

У меня две переменные, одна из них какая-то арифметическая переменная long, вторая — счётчик, unsigned long.
Мне нужно поделить одну на другую.
Как правильно это сделать?

@L29Ah:
L29Ah

‰ grep -R '#define MAX(a,' /usr/include | wc -l
18

@rion:
rion

объявил структурку, в которой в самом-присамом худшем случае с учетом всех выравниваний должно быть 36 байт.
добавил к ней __attribute__((__packed__)) чтоб получилось 15 байт.
делаю на неё sizeof. получаю 39 байт.
сижу думаю... долго думаю... всё ещё думаю...

@Strephil:
Strephil

так как предлагаемые банки видеопамяти адресуются с использованием типа "byte(uint8_t )", а обрабатываются как тип "word(uint32_t )".
Це — отличный язык программирования, всем рекомендую.
opennet.ru

@qnikst:
qnikst

Вот есть в rust enum, я делаю repr(C) и надеюсь в сях (на самом деле в хацкелях) получить отображение этой структурки. Т.к. документация зашкаливает или я не умею её искать то беру gdb и смотрю что там вижу:

(gdb) print a
$3 = {{RUST$ENUM$DISR = BCC, __0 = 0, __1 = 4294967295}, {
RUST$ENUM$DISR = BCC, __0 = 18446744073709551615}}
(gdb) ptype a
type = union RustEnum {
struct A;
struct BCC;
}
(gdb) ptype struct A
type = struct A {
enum class RustEnum RUST$ENUM$DISR;
i32 __0;
u32 __1;
}
(gdb) ptype struct BCC
type = struct BCC {
enum class RustEnum RUST$ENUM$DISR;
u64 __0;
}
(gdb) ptype enum RustEnum
type = enum class RustEnum {A, BCC}

вопрос, что за чудо этот enum class и каким образом мне написать сишный typedef, чтобы правильно отображал данную структуру.

Если я правильно понимаю, то enum class это более умный enum и я могу радостно использовать __tag вместо этого, а что с размером? По каким-то докам минимальный достаточный для отображения типов, так ли это? и могу ли я положиться на порядок или нет?

@lolicon:
lolicon

lord-n.narod.ru

@L29Ah:
L29Ah

geektimes.ru

@qnikst:
qnikst

В новом gcc появился -fsanitize, который заменяет пол валгринда и ловит датарейсы, use-after-freeи out-of-bounds доступы (в рантайме конечно). Вопрос, кто из гентушников в CFLAGS добавлял systemwide и как много сломается?

@Renha:
Renha

GUI на чистом Си
linux.org.ru

@SannySanoff:
SannySanoff

Дооптимизился компилятором CN1 (микро-оптимизациями) до усрачки, но дальше уже нужно оптимизировать алгоритмы сверху, и поэтому перестал 8)

Заценил оптимизатор LLVM/CLANG (кстати уперся в его глюк и забил — он дожонглировался регистрами: пишет через один offset register, читает через другой через некоторое время, а смещение-то не сходится!).

На картинке сгенерированный код по симуляции стека и результат его компиляции для ARM. Так эта скотина все SP++ и SP-- вычисляет, и даже не изменяет сам регистр, а только индекс при регистре, когда выполняет последовательность операций. Получается тупа куча mov без inc/dec. Очень было приятно видеть такой уровень оптимизации, я доволен прогрессом в этой сфере. Микро-оптимизировать сишечку в таких условиях становится сложновато.



@SannySanoff:
SannySanoff

Шланг полтора часа уже компилит:

ID COMMAND %CPU TIME #TH #WQ #PORT MEM
10504 clang 97.4 95:07.42 1/1 0 12 137M

Я немного пригрузил егойный регистровый аллокатор. Там есть один метод....

BC_DUP(); / DUP /
PUSH_INT(73);
PUSH_INT(7);
CHECK_ARRAY_ACCESS(3, SP[-2].data.i); / IASTORE / ((JAVA_ARRAY_INT*) ((JAVA_ARRAY)SP[-3].data.o).data)[SP[-2].data.i] = SP[-1].data.i; SP -= 3; BC_DUP(); / DUP */
PUSH_INT(74);
PUSH_INT(17);
CHECK_ARRAY_ACCESS(3, SP[-2].data.i); / IASTORE / ((JAVA_ARRAY_INT*) (*(JAVA_ARRAY)SP[-3].data.o).data)[SP[-2].data.i] = SP[-1].data.i; SP -= 3;
BC_DUP(); / DUP /
PUSH_INT(75);
PUSH_INT(0); / ICONST_0 /
CHECK_ARRAY_ACCESS(3, SP[-2].data.i); / IASTORE /
((JAVA_ARRAY_INT*) (*(JAVA_ARRAY)SP[-3].data.o).data)[SP[-2].data.i] = SP[-1].data.i; SP -= 3;
BC_DUP(); / DUP /

Вот такого добра среднее количество, штук 800, и шланг собирается SP сделать регистровой переменной (я его убедил наконец-то).

Не, ну я, конечно, в таких методах не буду больше на этом настаивать, мне как-то долговато ждать билда.

@OCTAGRAM:
OCTAGRAM

Сегодня смог продолжить разбираться с libipset ( #2826442 ). Из спортивного интереса попытался обойтись без C, заюзать GCC'шные фичи через доступ к фичам GCC из GNAT. Так вот, эта штука успешно заимпортировалась:
procedure VA_Start (Arg_Ptr : in out System.Address; Prev_Param : System.Address);
pragma Import (Intrinsic, VA_Start, "__builtin_va_start");

Однако, при попытке ею воспользоваться из адской процедуры получается error: 'va_start' used in function with fixed args. Пытался полечить, добавив функции GCC'шный аттрибут. Атрибуты в GNAT можно навешивать через pragma Machine_Attribute, а сам список атрибутов можно посмотреть здесь. Там всякая всячина, но вот заставить функцию быть varargs там нету. Так что я в печали. То немногое из C, что недоступно в GNAT, всё–таки добралось до меня. Можно попробовать найти не–built-in версию va_start, в Delphi прокатывало, либо подключать libffi, заодно и трамплин будет, чем сделать.

@L29Ah:
L29Ah

У кого как прикручен gdb к vim?

@waterlaz:
waterlaz

Вчера полчаса не мог понять, почему a[-i] сегфолтится, но с *(a-i) все в порядке.
Оказалось, все дело в том, что unsigned int i;
//_-

@reflechant:
reflechant

Чем больше я узнаю Python, тем больше он мне не нравится. А чем больше узнаю C — тем больше нравится. Хотя, конечно, include это уродство.

@L29Ah:
L29Ah

marc.ttias.be

@L29Ah:
L29Ah

Чёт сломался искаробочный(?) фолдинг для сишных исходников. Кто чо юзает?

@Renha:
Renha

Жуйк, я си-нуб, ругай. Это по задумке реализация буфера для пакетов размером до pc_input_packet байт. Пакеты нельзя бить по кусочкам, поэтому некоторая избыточность в конце буфера кажется неизвестна.

#define pc_input_size 1024
#define pc_input_packet 256
uint16_t pc_input_write_pointer= 0;
uint8_t pc_input_buffers[pc_input_size];
uint16_t pc_input_read_pointer= 0;
uint16_t pc_input_toread()
{//if return is zero, nothing to read, else read from returned address
  if (pc_input_read_pointer > (pc_input_size - pc_input_packet))
    pc_input_read_pointer= 0;
  if (pc_input_read_pointer==pc_input_write_pointer)
    return 0;
  else
    return pc_input_buffers+pc_input_read_pointer;
}
uint16_t pc_input_towrite(uint16_t amount)
{//if return is zero, could not write, else write to returned address
  if (pc_input_write_pointer > (pc_input_size - pc_input_packet))
    pc_input_write_pointer= 0;
  if (pc_input_write_pointer > pc_input_read_pointer)
    return pc_input_buffers+pc_input_write_pointer;
  else if (pc_input_read_pointer - pc_input_write_pointer > pc_input_packet)
    return pc_input_buffers+pc_input_write_pointer;
  else return 0;
}

@L29Ah:
L29Ah

x41-dsec.de

@L29Ah:
L29Ah

Как отловить переполнение стека?

@increaseblog:
increaseblog

Как скачать видео с сайта: increaseblog.ru

@L29Ah:
L29Ah

fdiv.net

@Lunasole:
Lunasole

— Хочешь сделать и выпустить свою игру, потому что в другие уже награлся?
— Хорошо при этом понимаешь свои возможности и оцениваешь все сложности?
— Успел понять что работа рядовой обезьянкой с галстуком на з/п лишена смысла?
— С детства больше был индивидуалистом и одиночкой, а не посредственным "своим" в компаниих?
— Тебе хватает знаний и скилла эффективно делать крупный проект (а даже небольшая игра коммерческого уровня это сравнительно крупный проект) на чем-то кроме питоно-нетовских скриптопараш? Например, на чистом С или другом языке без POO?
— Просто получаешь удовольствие от самого написания кода так и не можешь не пердолиться с кодом чуть ли не каждый день?
— Способен на лету улавливать всякие штуки, мыслить нестандартно?
— Считаешь что хватит упорства и задротства 2 года (а может и больше или меньше) пилить так без какой-либо гарантии успеха и отдачи?
— Любишь научную фантастику/космос и вдохновился бы игрой близкой к этим темам?
— Как хардкорный игровой задрот считаешь ПК единственной настоящей платформой для игр, ненавидишь казуальную ц/а сорта мобилодебилов/консоледетей, "тупую однокнопочную йобу" и прочее говнодельство, проштампованное за месяц на говно-unity?
— И это все серьезное намерение написать игру? Ты понял что это твоя "последняя фантазия"?

Да фига с два я поверю что ты такой крутой задрот-ноулайфер как я и который мне нужен

@increaseblog:
increaseblog

Как скачать видео с сайта ермолинский.рф

@waterlaz:
waterlaz

После оооочень длинного перерыва в использовании C++ сегодня пришлось опять на нем писать (хренов openCV). То ли я делаю все неправильно, то ли еще что, но пишу сильно больше бесполезного кода, чем даже по сравнению с чистым C.

@segfault:
segfault

Это гениально

static void rotate_port (struct connection *c) {
  switch (c->port) {
  case 443:
    c->port = 80;
    break;
  case 80:
    c->port = 25;
    break;
  case 25:
    c->port = 443;
    break;
  }
}

@increaseblog:
increaseblog

Как скачать видео с сайта


Подробнее ермолинский.рф