где хранятся ИМЕНА переменных
возник вопрос во время изучения указателей в C++, где хранятся непосредственно ИМЕНА различных переменных. В книгах помимо текста, нарисованы картинки где нарисована таблица (1 столбец и много строк) - это память. А сбоку подписаны адреса ячеек с одной стороны(номер ячейки), с другой стороны имена переменных и указателей в которых хранятся ЗНАЧЕНИЯ, а где храняться сами ИМЕНА.
Если считаете вопрос глупым, хотя бы скиньте ссылки где можно почитать (хотя сам считаю это на уровне ассемблера, или нет?)
Есть, конечно, исключения, когда имена остаются в программе (обычно, когда они нужны для общения с другими приложениями - имена экс/импортируемых функций, RTTI и пр.), но это болше специальные случаи и тебя вряд ли интересуют.
Компилятор вместе с объектным кодом может порождать специальные базы данных символов - отладочную информацию, в случае микросовтовских компиляторов это *.pdb файлы, отладчик просто пользуется этой информацией. К конечному пользователю программы pdb-файлы как правило не попадают.
////////
но как я понял с помощью оставления имен переменных в программе можно работать в на уровне "виртуальной машины" как в JAVA, т.е. без учета архитектуры компьютера или нет?
Имена переменных в программе не остаются. Переменные - это смещения на стеке (или регистры). Имена переменных присутствуют в файлах с отладочной информацией либо отсутствуют вообще. В программе можно обнаружить лишь имена классов и функций, и то не всегда.
Для "оставления имён" тебе придётся самому написать Java VM, вот тогда ты можешь уже и на архитектуру не обращать внимания.
Слишком общий вопрос, на него тебе лучше поискать ответ в википедии/ссылках в ней или я гугле.
Хотя по-моему стоит сначала определиться, зачем тебе это в первую очередь нужно. Мне кажется, ты копаешь не в ту сторону.
Если тебе нужны имена, может быть проще использовать какой-нибудь скриптовый яязык проде Ruby - с грехом пополам даже можно собрать как самостоятельное преложение. Хотя бы поймёшь, что к чему
есть ли возможность создание собственного БАЗОВОГО ТИПА (на подобии int), например в C++, или надо создать свой язык и там издеваться? и соответственного за счет него создавать свои классы
Что ты понимаешь под "базовым типом"?
Хотя по-моему стоит сначала определиться, зачем тебе это в первую очередь нужно. Мне кажется, ты копаешь не в ту сторону.
собрать какое-нибудь свое устройство со своим программным обеспечением :) (так в свободное время)
примерно так:
некое число в двоичном коде с ОПРЕДЕЛЕННОЙ РАЗРЯДНОСТЬЮ, которое обрабатывается по разному в зависимости от типа (я вижу только два основных ЦЕЛОЕ и С ПЛАВАЮЩЕЙ ЗАПЯТОЙ), может я не прав, просьба поправить
Ээ, а при чём здесь имена-то? О_о
Чем тебя не удовлетворяют char, short, long и int64? Если с прицелом под свою архитектуру - то это совсем другая история. "Базовый тип" тебя тут не спасёт...
может и не причем :D
просто области памяти имеют разные разрядности, а передача данных идет по шинам (пр. USB), но все они имеют стандарты
вопрос повис в воздухе, можно или нет создать свой базовый тип? (может и не придется изобретать колесо, но интересно же :))
А зачем? Современные ПК все равно работают с целыми числами разрядности кратной 8и.
Если дело чисто в интересе, то юзая существующие компиляторы - VC++, например - можно сделать свой класс и мудрить с ним как душе угодно. Но создание базовых типов поддерживает не много языков, по крайней мере, C/++ этого не умеет.
Единственное, что приходит на ум, это Smalltalk (благодаря его парадигме, что всё есть объект, там просто нету понятия "базовый" и "небазовый" тип), хотя где-то встречал и другие языки, сейчас не помню.
вопрос повис в воздухе, можно или нет создать свой базовый тип? (может и не придется изобретать колесо, но интересно же :))
Если обратиться к теории, то тип данных определяется совокупностью операторов создающих экземпляр типа - конструкторами - и операторов, работающих с экземплярами. Подробнее тут. Если некоторый язык программирования позволяет определять такую совокупность операторов, значит он позволяет вводить новые типы данных.
В любом ЯП есть набор предопределенных типов данных, таких как числа, строки, списки и прочая (набор варьируется от языка к языку).
Если говорить о базовом типе, как о типе, встроенном в язык (платформу), то, понятное дело, ввести новый базовый тип можно только переделав язык (платформу).