Будь ты проклят, Перри-Утконос!
-
- Бутлоадеры используют лонг джамп ту 0, и что? Чтобы не марать Си,
можно написать asm("jmp 0"); :))) - vpv.vpv(28.02.2023 06:56)
- Бутлодеры делают вот так VladislavS.(75 знак., 28.02.2023 13:15)
- Ну и во что это скомпилируется? Листинг-то кто-нибудь смотрит?
Вызов функции по указателю - это индирект колл. А нужен лонг джамп. - vpv.vpv(01.03.2023 07:29)
- Какие проблемы? VladislavS.(1 знак., 01.03.2023 08:44, картинка)
- А какая разница? Адрес возврата в стек сохраняется? my_app() всё
равно заново стек инициализирует. - Ale3000(01.03.2023 07:47)
- Воот! Именно! И я про что. Если нет разницы, то какой смысл лепить
адрес к указателю на функцию и после её вызывать, если можно просто
сразу прыгнуть на этот же адрес? - vpv.vpv(02.03.2023 07:25)
- Пример с листингом, конечно же, будет? VladislavS.(1 знак., 02.03.2023 08:42, картинка)
- Да, пожалуйста: asm ("jmp 0"); делает безусловный и длинный (24-х битный) vpv.vpv(104 знак., 09.03.2023 07:29)
- Пример с листингом, конечно же, будет? VladislavS.(1 знак., 02.03.2023 08:42, картинка)
- Воот! Именно! И я про что. Если нет разницы, то какой смысл лепить
адрес к указателю на функцию и после её вызывать, если можно просто
сразу прыгнуть на этот же адрес? - vpv.vpv(02.03.2023 07:25)
- Ну и во что это скомпилируется? Листинг-то кто-нибудь смотрит?
Вызов функции по указателю - это индирект колл. А нужен лонг джамп. - vpv.vpv(01.03.2023 07:29)
- Бутлодеры делают вот так VladislavS.(75 знак., 28.02.2023 13:15)
- Это больше для разработчиков мини-ОС. - Cкpипaч(26.02.2023 13:35)
- Ну изначально - это типа обработки исключительных ситуаций. В
корутинах оно работает по стечению обстоятельств, в противоречии со
стандартом. - _LightElf(01.03.2023 00:25,
)
- Может быть и так. Просто на глаза попадалось несколько application
notes на тему как на лонгджампах сделать конкурентную
мультизадачность, без ассемблера. Складно получалось. - Cкpипaч(01.03.2023 13:43)
- На пустынных просторах есть и моё поделие на эту тему :-) И где-то
на компе валяется продвинутый вариант, с блекджеком и семафорами.
Но оно работает только и исключительно потому, что писатели модных
компиляторов ещё не добрались грязными лапками до этих закоулков.
Тама фишка в том, что переход по longjmp "вниз" по дереву вызовов -
не определен. То есть если foo() вызывает bar(), то longjmp назад
из bar() в foo() корректен, а вот в обратную сторону - нет. - LightElf(08.03.2023 15:24)
- Разумеется все об этом знают, и поэтому в нитях не используют локальные переменные. Только глобальные. Ибо после раскрутки стека, закрутить его обратно невозможно. - =AlexD=(09.03.2023 09:52)
- "Цэ нитки"? Скачал в коллекцию, ссылочку рядом положил. Пока не
понял, как кроме задержек на что-то применить, хотя бы
ct_wait_while() Dingo(1 знак., 09.03.2023 06:20, ссылка)
- Ну это кооперативая многозадачка, сваянная на коленке по приколу. Каждая нитка имеет свой кусок стека, который отрезается от исходного системного стека. Где-то валяется более продвинутый вариант, выложу если найду. Там есть семафоры, мутексы и статические приоритеты задач. Но его на железе не тестил - только на компе. - LightElf(09.03.2023 10:52)
- На пустынных просторах есть и моё поделие на эту тему :-) И где-то
на компе валяется продвинутый вариант, с блекджеком и семафорами.
Но оно работает только и исключительно потому, что писатели модных
компиляторов ещё не добрались грязными лапками до этих закоулков.
Тама фишка в том, что переход по longjmp "вниз" по дереву вызовов -
не определен. То есть если foo() вызывает bar(), то longjmp назад
из bar() в foo() корректен, а вот в обратную сторону - нет. - LightElf(08.03.2023 15:24)
- Может быть и так. Просто на глаза попадалось несколько application
notes на тему как на лонгджампах сделать конкурентную
мультизадачность, без ассемблера. Складно получалось. - Cкpипaч(01.03.2023 13:43)
- Ну изначально - это типа обработки исключительных ситуаций. В
корутинах оно работает по стечению обстоятельств, в противоречии со
стандартом. - _LightElf(01.03.2023 00:25,
- Ха, прикольно! POV(1 знак., 26.02.2023 13:23, ссылка)
- Бутлоадеры используют лонг джамп ту 0, и что? Чтобы не марать Си,
можно написать asm("jmp 0"); :))) - vpv.vpv(28.02.2023 06:56)