Таблица переходов, также известная как таблица переходов, является рядом инструкций, все безусловно переходящие к другой точке в коде.
можно думать о них как о переключателе (или выбор) оператор, где все случаи заполнены:
MyJump(int c)
{
switch(state)
{
case 0:
goto func0label;
case 1:
goto func1label;
case 2:
goto func2label;
}
}
Примечание, что нет никакого возврата - код, к которому оно переходит, выполнит возврат, и оно перейдет назад к тому, везде, где myjump назвали.
Это полезно для конечных автоматов, где Вы выполняете определенный код на основе переменной состояния. Существуют многие, много другого использования, но это - одно из основного использования.
Это используется, где Вы не хотите напрасно тратить время, играя со стеком и хотеть оставить свободное место кода. Это особенно имеет применение в обработчиках прерываний, где скорость чрезвычайно важна, и периферийное устройство, которое вызвало прерывание, только известно единственной переменной. Это подобно таблице векторов в процессорах с контроллерами прерываний.
Одно использование взяло бы микроконтроллер за 0,60$ и генерировало бы составной объект (ТВ) сигнал для видео приложений. микро не мощно - на самом деле это едва-едва достаточно быстро для записи каждой строки развертки. Таблица переходов использовалась бы для рисования символов, потому что займет слишком много времени загружать битовый массив из памяти и использовать для () цикл для выталкивания битового массива. Вместо этого существует отдельный переход к букве и строке развертки, и затем приблизительно 8 инструкциям, которые на самом деле пишут данные непосредственно в порт.
-Adam
Согласно странице руководства на моем Mac (который имеет стандартную версию статистики BSD), вы можете получить версию модификации для эпохи в секундах с помощью:
stat -f %m /etc/passwd
Или, если вы хотите распечатайте это в часах: минутах: секундах, вы можете сделать это:
perl -e "print scalar(localtime(`stat -f %m /etc/passwd`))"