Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Если в редакторе имя переменной это строковое значение то после компиляции при поиске переменная есть как адресс?

ФермаКактусов Высший разум (181459), закрыт 1 год назад
например имеем две переменных A и B

if A != B:
then вывод какой то информации
else еще какой то блок

если перед компиляцией/интерпретацией переменная это строка/символ который можно найти как текст то как компилированый код обращается к переменной если код компилирован/интерпретирован?
Лучший ответ
Андрей Высший разум (425869) 1 год назад
Переменная состоит из 3 компонентов:
имя (то, что ты называешь строкой) - существует только в исходном коде
адрес в памяти (указатель) - существует только в скомпилированном коде
значение - хранится по адресу переменной в памяти

В процессе компиляции имя заменяется адресом (это может быть фиксированный адрес или смещение относительно вершины стека или фрейма), а операции обращения к переменной языка высокого уровня заменяются на процессорные команды обращения к данным по адресу переменной.

В современных интерпретируемых языках исходный текст сначала компилируется в байт-код виртуальной машины, а только потом выполняется виртуальной машиной. И там может быть либо такая же замена имен переменных на адреса, либо в байт-коде сохраняются имена переменных. В последнем случае переменные в виртуальной машине хранятся, например, в виде ассоциативного массива с ключами - именами переменных.
Остальные ответы
steam_old_engine Просветленный (27193) 1 год назад
Мне кажется, компиляция разная бывает. Варианты: до машинных команд, а, также, с сохранением классов
Άηϑρέΰ ҂ Искусственный Интеллект (179800) 1 год назад
преобразует в машинный код.. примерно так выглядит:

//if A!=B
mov eax,A ; A- адрес переменной
cmp dword ptr [b]
je $B ; A==B
; -- A!=b
@@:
Сергей Гений (56279) 1 год назад
Имена переменных (а так же функций, названия операторов, синтаксис) - только для легкого понимания человеком. Все переменные и функции - это адреса в памяти, операции - последовательность машинных команд, каждая из которых в памяти представлена как некое число. Вот и выходит - одни лишь адреса и цифры, цифры и адреса. По этой причине чистый машинный код был понятен только у 4 битных "калькуляторов". А когда калькуляторам доверили разбирать этот код, стало возможным написание более сложных программ для серьезных компьютеров. И так далее.
Вроде бы те, кто придумывали компьютер и первые программы - отличные математики.
Похожие вопросы