-
- Да бросьте, неужели? Проект это проект :) В проекте 2 разнородных задачи. Непонятно? Клавиатура и светодиод. Задачи запускаются карусельным способом while(true){task1(); task2(2);}Каждая Таска - это длиннющая функция, построенная на switch и при IdleMode(203 знак., 27.12.2011 01:34, )
- Статический контекст вызываемой функции не требует восстановления. При вызове функции нужно сохранить контекст(который регистровый пул и нестатические переменные) вызывающей функции. Дальше Вы Немцов - Vit(27.12.2011 01:38 - 01:41)
- Вы просто Вольфыч :) Про статический контекст в двухзадачном проекте сами придумали? - IdleMode(27.12.2011 01:51, )
- В прототридах контекст задачи хранится в статических переменных. Вы же о чём-то своём вещаете. - Vit(27.12.2011 01:55)
- Вы никак не можете понять что ли, что для длинной функции портится куча РОН? При чем тут статические или глобальные переменные? Да пусть они лежат родимые, не трогаем мы их. Регистров-то, регистров куча сохраняется. И указатели локального стека IdleMode(59 знак., 27.12.2011 02:13, )
- Да плевать, какой длины вызываемая функция - её регистровый пул при выходе из неё не сохраняется и потому его ненужно (не требуется, нет его) восстанавливать. Регистры же вызывающей функции и сохраняются, и восстанавливаются. - Vit(27.12.2011 02:20)
- Вы понимаете что такое пролог и эпилог функции? Там сохраняются ресурсы(конечно той функции, из которой мы пришли, как вы могли подумать что надо сохранять еще какие-то - не знаю) и восстанавливаются ресурсы (сохраненные, как вы могли подумать про IdleMode(36 знак., 27.12.2011 02:30, )
- Длина вызываемой функции не важна. Вы же упорно пытаетесь доказать обратное. Достаточное количество сохраняемого не более контекста вызывающей функции. - Vit(27.12.2011 02:39 - 02:44)
- Да боже ж мой-то, куда ж вас опять понесло-то... Сейчас для нас "большая" функция или мегафункция switch-задачи, как я ее тут назвал - это та, которая при выполнении требует кучу ресурсов, вызывает кучу внешних функций и т.п. Конечно, IdleMode(403 знак., 27.12.2011 07:44, )
- Клиника. В сад. - Vit(27.12.2011 09:57)
- Да боже ж мой-то, куда ж вас опять понесло-то... Сейчас для нас "большая" функция или мегафункция switch-задачи, как я ее тут назвал - это та, которая при выполнении требует кучу ресурсов, вызывает кучу внешних функций и т.п. Конечно, IdleMode(403 знак., 27.12.2011 07:44, )
- Длина вызываемой функции не важна. Вы же упорно пытаетесь доказать обратное. Достаточное количество сохраняемого не более контекста вызывающей функции. - Vit(27.12.2011 02:39 - 02:44)
- Вы понимаете что такое пролог и эпилог функции? Там сохраняются ресурсы(конечно той функции, из которой мы пришли, как вы могли подумать что надо сохранять еще какие-то - не знаю) и восстанавливаются ресурсы (сохраненные, как вы могли подумать про IdleMode(36 знак., 27.12.2011 02:30, )
- Да плевать, какой длины вызываемая функция - её регистровый пул при выходе из неё не сохраняется и потому его ненужно (не требуется, нет его) восстанавливать. Регистры же вызывающей функции и сохраняются, и восстанавливаются. - Vit(27.12.2011 02:20)
- Вы никак не можете понять что ли, что для длинной функции портится куча РОН? При чем тут статические или глобальные переменные? Да пусть они лежат родимые, не трогаем мы их. Регистров-то, регистров куча сохраняется. И указатели локального стека IdleMode(59 знак., 27.12.2011 02:13, )
- Напоминаю что в контекст входит часть пула РОН. - IdleMode(27.12.2011 01:54, )
- Вызываемой функции? - Vit(27.12.2011 01:56)
- У функции нет РОН. У вызываемой функции есть требуемые для ее работы ресурсы, в которые входит РОН и участки к примеру локального стека. Если угодно назовите это ее локальным контекстом. При входе в функцию пролог сохраняет ресурсы, портящиеся при IdleMode(48 знак., 27.12.2011 02:08, )
- У вызываемой функции при вызове нет контекста - он создается на время выполнения функции. Сохраняется относящееся к вызывающей функции, но умный компилятор действительно может пожать объём сохраняемого, потому как он "знает, кто у нас начальник Vit(10 знак., 27.12.2011 02:29)
- Как? Как, дорогой, ваш умный компилятор сожмет пролог и эпилог switch-функции реализации протопотоков, когда он не знает, какой case из 100 у него имеющегося (98 "легких" и 2 "тяжелых", портящих много РОН) в какой момент IdleMode(91 знак., 27.12.2011 07:52, )
- Компилятор умеет считать. - Vit(27.12.2011 10:00)
- Как? Как, дорогой, ваш умный компилятор сожмет пролог и эпилог switch-функции реализации протопотоков, когда он не знает, какой case из 100 у него имеющегося (98 "легких" и 2 "тяжелых", портящих много РОН) в какой момент IdleMode(91 знак., 27.12.2011 07:52, )
- У вызываемой функции при вызове нет контекста - он создается на время выполнения функции. Сохраняется относящееся к вызывающей функции, но умный компилятор действительно может пожать объём сохраняемого, потому как он "знает, кто у нас начальник Vit(10 знак., 27.12.2011 02:29)
- У функции нет РОН. У вызываемой функции есть требуемые для ее работы ресурсы, в которые входит РОН и участки к примеру локального стека. Если угодно назовите это ее локальным контекстом. При входе в функцию пролог сохраняет ресурсы, портящиеся при IdleMode(48 знак., 27.12.2011 02:08, )
- Вызываемой функции? - Vit(27.12.2011 01:56)
- В прототридах контекст задачи хранится в статических переменных. Вы же о чём-то своём вещаете. - Vit(27.12.2011 01:55)
- Вы просто Вольфыч :) Про статический контекст в двухзадачном проекте сами придумали? - IdleMode(27.12.2011 01:51, )
- Статический контекст вызываемой функции не требует восстановления. При вызове функции нужно сохранить контекст(который регистровый пул и нестатические переменные) вызывающей функции. Дальше Вы Немцов - Vit(27.12.2011 01:38 - 01:41)
- Да бросьте, неужели? Проект это проект :) В проекте 2 разнородных задачи. Непонятно? Клавиатура и светодиод. Задачи запускаются карусельным способом while(true){task1(); task2(2);}Каждая Таска - это длиннющая функция, построенная на switch и при IdleMode(203 знак., 27.12.2011 01:34, )