|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.09.2022, 21:40 | #1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 662
|
Boolean и Boolean(byte)
Код:
Код:
Код:
Вопрос: как происходит это преобразование byte boolean? Там вообще происходит преобразование? Или же просто процессор получает команды считать эту область памяти как boolean, и вообще нет никакой разницы, по тому адресу находится boolen или byte |
22.09.2022, 21:45 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,674
|
Вроде как преобразование типа ничего в памяти не меняет, просто воспринимает ячейку как данные другого типа. Но дизассемблер в помощь.
P.S. Надеюсь, твои программы никто кроме тебя не увидит, и не будет искать там ошибки или что-то дорабатывать... E-Mail: arigato.freelance@gmail.com
|
22.09.2022, 21:53 | #3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 662
|
|
22.09.2022, 22:56 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Преобразование типа это директива компилятору, как обращаться с данными в переменной. Это просто не может что-то изменить в памяти. А тем более процессор получит указания только в build-, но не в run-time.
|
22.09.2022, 23:47 | #5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,674
|
Там скорее вопрос в asm-коде, будет по сути одно и тоже, или же что-то поменяется. Так-то да, Делфи фактически никакого преобразования типа не делает, а просто воспринимает ячейку как данные другого типа. Но это касается именно Делфи, другие языки могут себя и иначе вести.
E-Mail: arigato.freelance@gmail.com
|
23.09.2022, 07:23 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Только я бы советовал приводить тип boolean не к byte, а к integer. Особенное, если в цикле они передаются как параметры или присваиваются к каким-либо свойствам компонентов. По нотации вызовов все параметры приводятся к машинному слову и в 32-битном коде это слово длиной 4 байта, а в 64-битном уже 8 байт.
Таким образом после преобразования вы избавите компилятор от необходимости расширения типа каждый раз при использовании этого значения. Хотя в большинстве случаев это расширение может быть выполнено заменой команды mov на одну из команд movzx/movsx. Потерь по времени при этом не предвидится. Но вы можете избежать затраты 1-2 лишних тактов на повторяющиеся расширения. С учетом скоростей работы современных процессоров - это смехотворно и не требует к себе внимания. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Boolean как byte | Kronos913 | Общие вопросы Delphi | 9 | 04.02.2022 22:55 |
boolean | mental | БД в Delphi | 4 | 10.08.2011 00:41 |
Boolean | korzunmaria | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 19.05.2010 22:13 |
PAS: byte --> boolean | Jean-Esther | Помощь студентам | 4 | 02.03.2009 21:29 |
Boolean... | ZhekON | Общие вопросы Delphi | 2 | 17.06.2007 00:39 |