![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Народ вот я тут непойму. Почему официально в Delphi и Паскале сделаны типы max размером только 32 бита??? Ведь наверняка, можно сделать их размером с разрядную сетку ОС. Может кто знает как они устроены??? Я сам не верю что в Delphi возможно в разделе Type так сделать, но может обясните почему??? И от чего это зависит???
|
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Если бы можно сделать размер больший чем разрядная сетка, то небыло бы необходимости в 64 битных процессорах.
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
Регистры в 32 битном процессоре имеют размер 32 бита
Вопрос: тебе быстрых 32-64 бита не хватает? -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Вообще хватает, но просто меня заинтересовал вопрос по типам. Вот в этой теме, я задавал вопрос "как создать такой тип", но в результате выяснилось что на Паскале его нельзя создать, а на Си можно, вот я и хочу поглубже разобратся в том как устроены типы и отчего зависят. Замечание: я не знаю "Си", поэтому если ты знаешь Sardar причину по которой на си можно сделать типы любой длины а на Паскале нельзя, то не мог бы пояснить. Хотя у меня есть предположение что на "Си" работает как ты описал выше.... |
|||
|
||||
| Burich-Caeser |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 28.7.2004 Репутация: нет Всего: 1 |
ZeroВ принципе можно, только с pointer оперировать придется. Пример - PChar виндозный. Там хранится только указатель на начало строки, а дальше делай, что хочешь. Или это меня спросонья глючит? 21.13 хорошо проснулся
--------------------
Ты брошен вниз силой судьбы,Ты унижен и раздавлен,Время забыть то, кем ты был,Но помнить, кем ты стал... |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
Zero тебе ответитли что такое типы и как сделать свой неограниченный по длине тип, просто ты не совсем догоняешь работу компилятора
Компилятор транслирует код под какой-то заданный процессор. Если процессор может работать с условно бесконечными числами, то компилятор будет юзать его возможности. Например код некоторого гипотетического проца:
В коде проц может иметь только два регистра условно бесконечной длинны. Все операции совершаются с загруженным в данный момент числом(инфа о регистрах), второй регистр используется как второй операнд. Это всё реализовать програмно проще чем аппаратно, поэтому ты редко встретишь подобные фичи в процессоре. Програмно это значит что компилятор может это сделать за нас либо мы должны писать всё ручками. Если компилятор поддерживает эти фичи сам, то глянь на код под дебаггером, увидишь что все транслируется в вызовы функций библиотеки идущей вместе с компилером. Теперь о языках. Есть убогие языки типа бейсика где каждая фишка реализованна компилятором, а твоя задача связать все возможности компилера в одну программу. Например печать на экран Print, чтение из файла/консоли Input и т.д. - бесчисленное количество ключевых слов. Есть расширямые языки, где компилятор имеет минимум базовых возможностей, например поддержка типов и структур в С. Код ты можешь писать действительно с нуля расширяя язык новыми функциями и т.п. ООП языки тоже расширяемые, где ты можешь расширить множество типов(классы) языка. Правда все эти типы сложные, по сути это структуры, а методы обьектов это функции, которым передается ссылка на структуру. Хотя для интепретируемых языков это утверждение не верно. Теперь представим язык в котором мы можем расширить примитивы. Для этого нам нужно написать собственный код и перегрузить все операторы этого типа, т.е. при любой операции с таким типом будет вызыватся нашь код. Это не сложно сделать в языках где есть перегрузка операторов. Ну а теперь спускаемся с небес на землю и смотрим с чем ты работаешь. Дельфи, не знаю есть ли там перегрузка операторов работающая с примитивными типами, но поддержка обьектов точно есть. Следовательно лучший способ написать клас, в котором опрделить все операции с типом как методы. В С++ ты можешь перегрузить операторы для этого класса, таким образом тип можеть внешне быть похожим на примитив(хотя не люблю такой подход - сбивает с толку). Как видим если язык не расширяемый, то это фатально, иначе расширяем возможности собственным кодом. Последнее. Зачем тебе большой тип для циклов(я так понял)? Если цикл босльшой, то ты делаешь что то не верное... Надеюсь я не зря потратил время набивая всю эту.... -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Zero |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Ладно, не хотел я говорить ну всёже скажу:
Вобщем спасибо за Даходчевое Обяснение!!!! Это сообщение отредактировал(а) Zero - 29.12.2004, 09:38 |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |