-
- Все равно с переносимостью будут проблемы. setjmp не является универсальной на всех платформах. Т.е. не намного лучше асмового кода. - Evgeny_CD(05.11.2015 20:05)
- Не говори о чём не знаешь с высоты менагерского полёта. Я как проф. программист тебе скажу, что alloca() и setjmp() как раз и являются кросплатформенным способом выкрутиться из ситуации без знания регистров и ассемблера. Будь там операционка (т.е. fk0(283 знак., 06.11.2015 00:47)
- Скажи мне, профессиональный программист, WinAVR -> PIC24 -> PIC32 -> GCC ARM Cortex | IAR ARM Cortex alloca() и setjmp() точно ли есть, и одинаково ли работают? - Evgeny_CD(06.11.2015 01:37)
- alloca нет, потому как оно оказывается не входит в стандарт. setjmp есть везде, потому что стандарт. Поведение опять-таки описано в стандарте. - LightElf(06.11.2015 19:50)
- Не важно одинаково ли они работают, но они должны быть и типично есть в любом C компиляторе после 1989 года. Другое дело, что на PIC24, могу сказать, оно жрёт неадекватно (порядка 256 байт) памяти. Но это уже детали. - fk0(06.11.2015 12:03)
- Как пример -> - Evgeny_CD(06.11.2015 01:44, ссылка)
- Скажи мне, профессиональный программист, WinAVR -> PIC24 -> PIC32 -> GCC ARM Cortex | IAR ARM Cortex alloca() и setjmp() точно ли есть, и одинаково ли работают? - Evgeny_CD(06.11.2015 01:37)
- Не говори о чём не знаешь с высоты менагерского полёта. Я как проф. программист тебе скажу, что alloca() и setjmp() как раз и являются кросплатформенным способом выкрутиться из ситуации без знания регистров и ассемблера. Будь там операционка (т.е. fk0(283 знак., 06.11.2015 00:47)
- Не понимаю, чем память в куче хуже чем на стеке? - =AlexD=(05.11.2015 19:59)
- Наверное, задумка создателей этой функции была автоматическое освобождение памяти, но реальность оказалась мрачнее мечтаний :( - Evgeny_CD(05.11.2015 20:01)
- 1) Выделение памяти на стеке потокобезопасно сразу, без всяких выкрутасов LightElf(57 знак., 07.11.2015 02:35)
- Задумка создателей в том, что C не предоставляет другого способа именить $SP. - fk0(06.11.2015 00:48)
- Не видел требований что бы это было сделано через изменение $SP. Честно говоря не представляю как можно менять $SP, там же все локальные переменные относительно него адресуются, вся адресация нарушится. Либо надо выделять еще один регистр, которых AlexBi(13 знак., 06.11.2015 11:32)
- Это проблема автора компилятора и рантайма. - LightElf(06.11.2015 19:53)
- Для отдельного потока, треда, задачи, процесса, нужен свой стек, значит нужно переключать стеки и менять $SP. Что тут непонятного? - fk0(06.11.2015 12:06)
- Вот например кусок кода: AlexBi(240 знак., 06.11.2015 12:37)
- Не видел требований что бы это было сделано через изменение $SP. Честно говоря не представляю как можно менять $SP, там же все локальные переменные относительно него адресуются, вся адресация нарушится. Либо надо выделять еще один регистр, которых AlexBi(13 знак., 06.11.2015 11:32)
- Наверное, задумка создателей этой функции была автоматическое освобождение памяти, но реальность оказалась мрачнее мечтаний :( - Evgeny_CD(05.11.2015 20:01)
- Ксения права -> - Evgeny_CD(05.11.2015 19:56, ссылка)
- Все равно с переносимостью будут проблемы. setjmp не является универсальной на всех платформах. Т.е. не намного лучше асмового кода. - Evgeny_CD(05.11.2015 20:05)