Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

где хранятся ИМЕНА переменных

36K
17 марта 2010 года
Geser
32 / / 03.03.2009
доброго времени суток
возник вопрос во время изучения указателей в C++, где хранятся непосредственно ИМЕНА различных переменных. В книгах помимо текста, нарисованы картинки где нарисована таблица (1 столбец и много строк) - это память. А сбоку подписаны адреса ячеек с одной стороны(номер ячейки), с другой стороны имена переменных и указателей в которых хранятся ЗНАЧЕНИЯ, а где храняться сами ИМЕНА.
Если считаете вопрос глупым, хотя бы скиньте ссылки где можно почитать (хотя сам считаю это на уровне ассемблера, или нет?)
253
17 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Имена переменных, если ты пишешь в компилируемом языке (от C/Pascal до C#/Java) не хранятся нигде. Они исчезают после компиляции, т.к. программе нужны адреса, а не имена, которые к ним привязаны. Поэтому имена исключительно для программиста, это просто метки для адресов в памяти, которые компилятор отбрасывает на соответствующем этапе.

Есть, конечно, исключения, когда имена остаются в программе (обычно, когда они нужны для общения с другими приложениями - имена экс/импортируемых функций, RTTI и пр.), но это болше специальные случаи и тебя вряд ли интересуют.
5
17 марта 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Geser
А сбоку подписаны адреса ячеек с одной стороны(номер ячейки), с другой стороны имена переменных и указателей в которых хранятся ЗНАЧЕНИЯ, а где храняться сами ИМЕНА.

Компилятор вместе с объектным кодом может порождать специальные базы данных символов - отладочную информацию, в случае микросовтовских компиляторов это *.pdb файлы, отладчик просто пользуется этой информацией. К конечному пользователю программы pdb-файлы как правило не попадают.

36K
17 марта 2010 года
Geser
32 / / 03.03.2009
а можно по подробней про RTTI, прочитав про неё в википедии, щас продолжаю поиск про нее в яндексе: может наиболее интересные ссылки кинете.
////////
но как я понял с помощью оставления имен переменных в программе можно работать в на уровне "виртуальной машины" как в JAVA, т.е. без учета архитектуры компьютера или нет?
5
18 марта 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Geser
но как я понял с помощью оставления имен переменных в программе можно работать в на уровне "виртуальной машины" как в JAVA, т.е. без учета архитектуры компьютера или нет?


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

253
18 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
но как я понял с помощью оставления имен переменных в программе можно работать в на уровне "виртуальной машины" как в JAVA, т.е. без учета архитектуры компьютера или нет?


Для "оставления имён" тебе придётся самому написать Java VM, вот тогда ты можешь уже и на архитектуру не обращать внимания.

Цитата:
а можно по подробней про RTTI


Слишком общий вопрос, на него тебе лучше поискать ответ в википедии/ссылках в ней или я гугле.

Хотя по-моему стоит сначала определиться, зачем тебе это в первую очередь нужно. Мне кажется, ты копаешь не в ту сторону.
Если тебе нужны имена, может быть проще использовать какой-нибудь скриптовый яязык проде Ruby - с грехом пополам даже можно собрать как самостоятельное преложение. Хотя бы поймёшь, что к чему

36K
18 марта 2010 года
Geser
32 / / 03.03.2009
еще вопрос, может не по теме, но почему то мне кажется, что связь есть (если не так то исправьте, я ведь начинающий).
есть ли возможность создание собственного БАЗОВОГО ТИПА (на подобии int), например в C++, или надо создать свой язык и там издеваться? и соответственного за счет него создавать свои классы
5
18 марта 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Geser
есть ли возможность создание собственного БАЗОВОГО ТИПА (на подобии int), например в C++, или надо создать свой язык и там издеваться?

Что ты понимаешь под "базовым типом"?

36K
18 марта 2010 года
Geser
32 / / 03.03.2009
Цитата: Proger_XP

Хотя по-моему стоит сначала определиться, зачем тебе это в первую очередь нужно. Мне кажется, ты копаешь не в ту сторону.


собрать какое-нибудь свое устройство со своим программным обеспечением :) (так в свободное время)

36K
18 марта 2010 года
Geser
32 / / 03.03.2009
Цитата: hardcase
Что ты понимаешь под "базовым типом"?



примерно так:
некое число в двоичном коде с ОПРЕДЕЛЕННОЙ РАЗРЯДНОСТЬЮ, которое обрабатывается по разному в зависимости от типа (я вижу только два основных ЦЕЛОЕ и С ПЛАВАЮЩЕЙ ЗАПЯТОЙ), может я не прав, просьба поправить

253
18 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
собрать какое-нибудь свое устройство со своим программным обеспечением (так в свободное время)


Ээ, а при чём здесь имена-то? О_о

Цитата:
некое число в двоичном коде с ОПРЕДЕЛЕННОЙ РАЗРЯДНОСТЬЮ, которое обрабатывается по разному в зависимости от типа (я вижу только два основных ЦЕЛОЕ и С ПЛАВАЮЩЕЙ ЗАПЯТОЙ), может я не прав, просьба поправить


Чем тебя не удовлетворяют char, short, long и int64? Если с прицелом под свою архитектуру - то это совсем другая история. "Базовый тип" тебя тут не спасёт...

36K
18 марта 2010 года
Geser
32 / / 03.03.2009
Цитата: Proger_XP
Ээ, а при чём здесь имена-то? О_о



может и не причем :D
просто области памяти имеют разные разрядности, а передача данных идет по шинам (пр. USB), но все они имеют стандарты

вопрос повис в воздухе, можно или нет создать свой базовый тип? (может и не придется изобретать колесо, но интересно же :))

5
18 марта 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Geser
вопрос повис в воздухе, можно или нет создать свой базовый тип? (может и не придется изобретать колесо, но интересно же :))


А зачем? Современные ПК все равно работают с целыми числами разрядности кратной 8и.

253
18 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
вопрос повис в воздухе, можно или нет создать свой базовый тип? (может и не придется изобретать колесо, но интересно же :))


Если дело чисто в интересе, то юзая существующие компиляторы - VC++, например - можно сделать свой класс и мудрить с ним как душе угодно. Но создание базовых типов поддерживает не много языков, по крайней мере, C/++ этого не умеет.

Единственное, что приходит на ум, это Smalltalk (благодаря его парадигме, что всё есть объект, там просто нету понятия "базовый" и "небазовый" тип), хотя где-то встречал и другие языки, сейчас не помню.

5
18 марта 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Geser

вопрос повис в воздухе, можно или нет создать свой базовый тип? (может и не придется изобретать колесо, но интересно же :))


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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог