Таким образом,% ebp (указатель стека) + константа используется для ссылки на локальные переменные в сборке. Что делать, если слишком много локальных переменных, а требуемая константа - настолько большая, что она не соответствует одной строке кода сборки (32 или 64 бита)? Как обрабатываются такие краевые случаи?Слишком много локальных переменных и переполнение стека базового указателя
Например, в приведенном выше изображении предположим, что существует 2^30 локальных переменных. Чтобы ссылаться на последнее, нам понадобится смещение 2^32. Если мы работаем в 32-битной среде, это смещение не будет вписываться в одну строку кода, учитывая, что в этой же строке есть код операции, пункт назначения и т. Д.
У вас не будет столько стопки в любом случае, чтобы вы могли дождаться его, переполнение стека! \ o/Но если у вас их достаточно, это просто обернется. – Jester
Реалистично, что компилятор взорвется задолго до этого (так что у него никогда не будет возможности генерировать код asm, который бы имел эту проблему), так как AST и другие внутренние структуры данных будут еще больше. – harold