Таблица переходов (оператор switch) с отрицательным входным значением - PullRequest
0 голосов
/ 23 февраля 2020

Малые операторы switch реализованы с использованием таблиц переходов в сборке. Он использует ваш ввод x, чтобы перейти к адресу и выполнить его, поэтому предположим, что мой ввод 5, вот что происходит в сборке:

- move 5 to rax
- rax = rax * instruction size (8 in x64) + jump table base address
- jump to rax (which is an address containing my case instructions)

Теперь, что произойдет, если мой ввод отрицательное число? Я устал с g cc, и получается, что компилятор устанавливает отрицательное значение в 0. Это нормальное поведение?

...