-
- Ну и чем вам ртось не угодило? Дурью маетесь от нефигделать. Никтож не заставляет вас весь код распиливать на задачи. Запускаешь две таски, младшую под тикль, старшую под майнлуп, в майнлупе вайтом выделяешь кусочек времени для отработки тикля, и =AlexD=(128 знак., 03.12.2018 07:31)
- Можно без ассемблера. Тут помнится кто-то самодельную ОС делал (на сахаре), исключительно в рамках C99. Стеки выделялись то ли через alloca, то ли через массив переменного размера, то ли через рекурсивный вызов функции с большим числом аргументов. fk0(38 знак., 02.12.2018 13:22)
- Я делал ;) - LightElf(02.12.2018 17:17)
- Помним. Критика: надо отделять мух от котлет. Выделение стека, переключение потоков, планировщик. Кому-то что-то захочется сделать иначе, а тут всё в куче - или всё, или ничего. - SciFi(02.12.2018 17:20, ссылка)
- Взаимно. Если уж все равно применен ассемблер - нафига извращаться с setjmp? - LightElf(02.12.2018 17:40)
- Ви таки предлагаете вновь изобрести
лисапедsetjmp/longjmp? Спасибо, неохота. А маленький трюк с установкой указателя стека короче и проще, чем трюки с рекурсией. В данном случае меня не парит переносимость и/или подрыв канонических устоев. - SciFi(02.12.2018 18:14)- Таки да, предлагаю. Ну чиста шоб не поломалось при смене компилятора/версии/ключей компиляции. - LightElf(02.12.2018 18:50)
- Кстати, подкидываю рацуху: в вашем чудо-коде определять направление роста стека динамически. А вдруг оно неожиданно изменится? Благодарить не обязательно, плюшки слать тоже :-) - SciFi(02.12.2018 18:54)
- Я это уже сделал в последующих модификациях :-) - LightElf(02.12.2018 19:45)
- Как перфекционист перфекционисту: рукопожимаю :-) - SciFi(02.12.2018 20:05)
- Я это уже сделал в последующих модификациях :-) - LightElf(02.12.2018 19:45)
- Кстати, подкидываю рацуху: в вашем чудо-коде определять направление роста стека динамически. А вдруг оно неожиданно изменится? Благодарить не обязательно, плюшки слать тоже :-) - SciFi(02.12.2018 18:54)
- Таки да, предлагаю. Ну чиста шоб не поломалось при смене компилятора/версии/ключей компиляции. - LightElf(02.12.2018 18:50)
- Ви таки предлагаете вновь изобрести
- Взаимно. Если уж все равно применен ассемблер - нафига извращаться с setjmp? - LightElf(02.12.2018 17:40)
- Помним. Критика: надо отделять мух от котлет. Выделение стека, переключение потоков, планировщик. Кому-то что-то захочется сделать иначе, а тут всё в куче - или всё, или ничего. - SciFi(02.12.2018 17:20, ссылка)
- Я делал ;) - LightElf(02.12.2018 17:17)
- А с yield в коде интерпретатора ты сделал какую-то параллельную многозадачность и теперь тебе исполнение скрипта нужно синхронизировать с машинным кодом какими-то мьютексами что ли. Оно не синхронное теперь, так неудобно. Практически та же RTOS, fk0(20 знак., 01.12.2018 14:26)
- yield кагбэ не в любом месте исполнение рвет... нахрена, в корпоративке, мьютексы?! - Скрипач(01.12.2018 14:28)
- Это у него сишный код елдом рвется в нужных местах. А тиклевский между строчек что ли, где попало? Я так понял. - fk0(01.12.2018 15:26)
- Я так понял что он yield из тиклевского кода вызывает. Ибо "скрипт на TCL выполняется одним куском". - Скрипач(01.12.2018 15:42)
- Можно и не куском, а по функциям, командам, отдельным (под)скриптам. Только я не понял, а кто ему контекст с таким елдом сохранит? В современном тикле на ПК есть свой yield, но там оно страшненько сделано и не для того. - fk0(01.12.2018 15:57)
- Контекст - в отдельном стеке. Вызов - построчно, вы правы. Но и это, при некоторой дисциплине написания кода, не создает необходимости в мьютексах. - Скрипач(02.12.2018 12:58)
Лень вдумываться. Какие-то манипуляции с отдельным стеком - в наличии.- Скрипач(01.12.2018 16:21 - 02.12.2018 12:55)
- Можно и не куском, а по функциям, командам, отдельным (под)скриптам. Только я не понял, а кто ему контекст с таким елдом сохранит? В современном тикле на ПК есть свой yield, но там оно страшненько сделано и не для того. - fk0(01.12.2018 15:57)
- Я так понял что он yield из тиклевского кода вызывает. Ибо "скрипт на TCL выполняется одним куском". - Скрипач(01.12.2018 15:42)
- +1. Кстати, кооперативка же. - SciFi(01.12.2018 14:48 - 14:50, картинка)
- Это у него сишный код елдом рвется в нужных местах. А тиклевский между строчек что ли, где попало? Я так понял. - fk0(01.12.2018 15:26)
- yield кагбэ не в любом месте исполнение рвет... нахрена, в корпоративке, мьютексы?! - Скрипач(01.12.2018 14:28)
- Ты что-то не то говоришь. В тикле там свой встроенный цикл обработки событий, либо можно свой написать вместо него, смотря как удобнее. Скрипт естественно махом исполняется за раз. Поэтому либо должен быть нашпигован командами after (vwait, fk0(760 знак., 01.12.2018 14:23)
- А как с реентерабельностью библиотек? - Boвa(30.11.2018 21:03 - 21:07)
- ((void (*)(void*))(1 + (int)set_stack))(stack + sizeof stack)... ненавижу программистов - VLLV(30.11.2018 16:01)
- ++++100500! очень вас поддерживаю! Поубивав бы! Еще очень "нравятся" нелюбители скобок и фигурных скобок, тоже в в расход из маузера сразу... - Aleksey_75(30.11.2018 23:54)
- Такой уж в C корявый синтаксис приведения к типу указатель на функцию. Его, конечно, тоже придумали программисты, но это были другие программисты. - йцукен(30.11.2018 18:49)
- Никто не заставляет всё в кучу. Для обладателей чересчур тонкой душевной организации можно так: SciFi(173 знак., 30.11.2018 19:00)
- Ясен пень, можно, и в каких-то случаях нужно для улучшения читаемости, но в данном случае намерение понятно ещё до зашифрованной строчки, так что читаемость не страдает. - йцукен(30.11.2018 19:15)
- Может быть, но я в последние дни занимался именно улучшением читаемости, типизацией енумов, двиганьем процессов из цикла в прерывания и обратно, и прочими отступами. У меня читаемость страдает ) - VLLV(30.11.2018 23:32)
- Каменты надо делать. Не вот это "c = a + b; // теперь в переменной с сумма а и b", а по сути вопроса, которая не совсем ясна, если смотреть на код. SciFi(66 знак., 01.12.2018 00:34 - 00:38)
- Если бы комментами можно было исправить говнокод, в программировании были бы популярны писатели :) - VLLV(01.12.2018 10:28)
- Говнокод не исправить, но камменты должны быть. _basile(120 знак., 01.12.2018 11:00, )
- void main(void)? - VLLV(01.12.2018 12:40)
- Пророки завещали "int main (int argc, char *argv[])". Сохраняем int, ибо пророки, и заметаем под ковёр аргументы (). И вашим, и нашим. - SciFi(02.12.2018 13:59)
- Там ещё char *environ[] был. Даже у микрософта. - fk0(02.12.2018 14:01)
- И так можно. _basile(43 знак., 02.12.2018 08:37, )
- Компилятору это пофиг. Так вот, как комментировать функцию main и где та грань? - VLLV(02.12.2018 12:53)
- Я те в наглую напишу. _(183 знак., 02.12.2018 23:27, )
- void main () // Это все, что останется после меня - MBedder(02.12.2018 13:06)
- Многие компиляторы дадут варнинг, если не int main. - fk0(02.12.2018 13:19)
- #ifdef fk0 int #else void #endif // :)) - MBedder(02.12.2018 13:27)
- Ты тоже про это думаешь? ;) - VLLV(02.12.2018 13:17)
- Многие компиляторы дадут варнинг, если не int main. - fk0(02.12.2018 13:19)
- Компилятору это пофиг. Так вот, как комментировать функцию main и где та грань? - VLLV(02.12.2018 12:53)
- Пророки завещали "int main (int argc, char *argv[])". Сохраняем int, ибо пророки, и заметаем под ковёр аргументы (). И вашим, и нашим. - SciFi(02.12.2018 13:59)
- void main(void)? - VLLV(01.12.2018 12:40)
- Говнокод не исправить, но камменты должны быть. _basile(120 знак., 01.12.2018 11:00, )
- +1 - Make_Pic(01.12.2018 08:58)
- Если бы комментами можно было исправить говнокод, в программировании были бы популярны писатели :) - VLLV(01.12.2018 10:28)
- Каменты надо делать. Не вот это "c = a + b; // теперь в переменной с сумма а и b", а по сути вопроса, которая не совсем ясна, если смотреть на код. SciFi(66 знак., 01.12.2018 00:34 - 00:38)
- Может быть, но я в последние дни занимался именно улучшением читаемости, типизацией енумов, двиганьем процессов из цикла в прерывания и обратно, и прочими отступами. У меня читаемость страдает ) - VLLV(30.11.2018 23:32)
- Ясен пень, можно, и в каких-то случаях нужно для улучшения читаемости, но в данном случае намерение понятно ещё до зашифрованной строчки, так что читаемость не страдает. - йцукен(30.11.2018 19:15)
- Никто не заставляет всё в кучу. Для обладателей чересчур тонкой душевной организации можно так: SciFi(173 знак., 30.11.2018 19:00)
- Месье знает толк - lloyd(30.11.2018 15:51)