Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распределение памяти для переменных программы 
:(
    Опции темы
Mal Hack
Дата 30.10.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Имеем консольное приложение на Паскале или на Си. Ну не суть в языке.
В программе используется энное кол-во переменных.
Мне бы хотелось узнать каким образом выстраивается память под эти переменые и под всю программу в частности.
Т.е. как я понимаю, под INT выделяется последовательно 2 байта. Под real - 4, первые два из которых под мантису, вторые под дробную часть...
PM ICQ   Вверх
batigoal
Дата 5.11.2005, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Так это, по-моему, сугубо зависит от языка.

Мы в свое время писали в институе упрощенный компилятор ассемблера, а потом - эмулятор программы, записанной машинных кодах. Я бы описал, но это все несложно найти в литературе (о кодах команд, размерностях типов, литералах...)


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Mal Hack
Дата 5.11.2005, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Lamer @ 5.11.2005, 14:07)
Так это, по-моему, сугубо зависит от языка.

Ну понятно что тип каждый в языке по своему выражен может быть. Но ведь есть какие-то общие правила.

Цитата(Lamer @ 5.11.2005, 14:07)
это все несложно найти в литературе

Была бы такая, не спрашивал smile

PM ICQ   Вверх
batigoal
Дата 5.11.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Обычно это обзывается "теорией компиляторов". На форуме это точно обсуждалось, вот только не поню, в каких разделах.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 5.11.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 3
Всего: 538



Цитата(Mal @ 5.11.2005, 13:44)
Ну понятно что тип каждый в языке по своему выражен может быть. Но ведь есть какие-то общие правила.

Как правило базовые типы данных идут от аппаратуры, чтобы обеспечить максимальную производительность. Хотя есть и исключения, но они редки.

Цитата(Mal @ 5.11.2005, 13:44)
Была бы такая, не спрашивал

У меня есть А. Ахо, Р. Сети, Дж. Ульман Компиляторы. Принципы, технологии, инструменты., могу поделиться если интерестно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Mal Hack
Дата 5.11.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(LSD @ 5.11.2005, 16:19)
У меня есть А. Ахо, Р. Сети, Дж. Ульман Компиляторы. Принципы, технологии, инструменты., могу поделиться если интерестно.

В цифровом варианте?
PM ICQ   Вверх
S.A.P.
Дата 5.11.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 1
Всего: 71



Цитата(Mal @ 30.10.2005, 23:53)
Т.е. как я понимаю, под INT выделяется последовательно 2 байта. Под real - 4, первые два из которых под мантису, вторые под дробную часть...
Под INT обычно идет 4 байта, но все зависит от реализации и от системы, а вот с флоатами все гораздо сложнее. Я думаю, что в общем случае храниться мантиса нормализованного двоичного числа до единицы (единица как правило выкидывается, т.к. и так понятно что она всегда идет первая), порядок числа и его знак. Но это в общих чертах, там есть несколько режимов хранения: для бесконечно больших чисел, бесконечно малых, нуля... Когда то хотел раздобыть полный стандарт хранения дробных чисел, а он за деньги smile .

Ну а что касается выделения, освобождения памяти под переменные, то тут я могу только по C++ судить: при объявлении переменной память выделяется в стеке и стек восстанавливается в тот момент, когда программа выходит из блока, где объявлена переменная. Это в том случае, если мы не объявляем статическую переменную. Для динамических переменных указатель тоже храниться в стеке, а сам объект в свободной памяти. В языках с ручным управлением памяти, динамическую память надо освобождать вручную.

Это сообщение отредактировал(а) Perchilla - 5.11.2005, 16:03
PM MAIL   Вверх
LSD
Дата 5.11.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 3
Всего: 538



Цитата(Mal @ 5.11.2005, 15:29)
В цифровом варианте?

Да.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.