История изменений
Исправление
Bizun,
(текущая версия)
:
Огого, чет я ни чего не понял. Допустим, исходная конструкция:
unsigned int x;
switch (x) {
case V1: break;
case V2: break;
case V3: break;
...
case VN: break;
}
//Таблица будет прирмерно такая:
V1, adr1
V2, adr2
V3, adr3
...
VN, adrN
Возможно, я сильно туплю, но все же... Да, туплю, ниже описал.
UPD: Я, кажется, понял что такое goto tbl[x-min(V1...Vn)]. Это некая большая таблица, в которой x-min(V1...Vn) - будет адрес куска исполняемого кода, верно?
Я, если честно, под таблицей предпологал другую структуру (ключ1, адрес1 ... ключN, адресN) и в своемнедо-компиляторе сделал именно так. При выполнении свитча просто перебирались константы и при совпадении ключей совершался переход.
Исправление
Bizun,
:
Огого, чет я ни чего не понял. Допустим, исходная конструкция:
unsigned int x;
switch (x) {
case V1: break;
case V2: break;
case V3: break;
...
case VN: break;
}
//Таблица будет прирмерно такая:
V1, adr1
V2, adr2
V3, adr3
...
VN, adrN
Возможно, я сильно туплю, но все же...
UPD: Я, кажется, понял что такое goto tbl[x-min(V1...Vn)]. Это некая большая таблица, в которой x-min(V1...Vn) - будет адрес куска исполняемого кода, верно?
Я, если честно, под таблицей предпологал другую структуру (ключ1, адрес1 ... ключN, адресN) и в своемнедо-компиляторе сделал именно так. При выполнении свитча просто перебирались константы и при совпадении ключей совершался переход.
Исходная версия Deleted, :
Огого, чет я ни чего не понял. Допустим, исходная конструкция:
unsigned int x;
switch (x) {
case V1: break;
case V2: break;
case V3: break;
...
case VN: break;
}
//Таблица будет прирмерно такая:
V1, adr1
V2, adr2
V3, adr3
...
VN, adrN
Возможно, я сильно туплю, но все же...