Я пишу простую виртуальную машину, и у меня есть вопрос о реализации доступа к объектам и членам структуры.
Так как начальный адрес программы произволен при каждом запуске, то и впоследствии адрес каждого из ее объектов тоже произволен.
Таким образом, единственный способ, которым я могу придумать доступ к объекту или его объекту-члену, - это доступ к смещению от «базового» указателя, что означает, что для доступа к чему-либо в структуре программы требуется арифметическая операция.
Мой вопрос заключается в том, так ли это делается в профессиональных компиляторах, потому что, очевидно, такой подход добавляет некоторые накладные расходы в среду выполнения, и я сам не могу придумать никакого способа разгрузить этот процесс из среды выполнения из-за отсутствия гарантий для непротиворечивость выделения памяти и ее адреса?