Просмотр полной версии : [Вопрос] Адрес флага
Требуется проверить валидность флага, то бишь его наличие.
Собственно, вопрос: по какой закономерности можно определить его адрес? Насколько мне известно, принцип немного другой, нежели у простых переменных со смещением.
Адрес какого флага? Если вы про битовые операции, то адрес "флагов" - адрес значения, поскольку Pawn хранит значения в ячейках по 32-бита.
Адрес какого флага? Если вы про битовые операции, то адрес "флагов" - адрес значения, поскольку Pawn хранит значения в ячейках по 32-бита.
Да, флагов, то бишь "экономных переменных".
Если изъясняться точнее, то нужен адрес этой самой ячейки, зарезервированной в стеке, которая хранит значение определенного флага.
Да, флагов, то бишь "экономных переменных".
Если изъясняться точнее, то нужен адрес этой самой ячейки, зарезервированной в стеке, которая хранит значение определенного флага.
Есть несколько способов получить адрес ячейки.
1) Ячейка - часть массива.
new addr;
#emit load.s.alt array // load.alt если массив глобальный
#emit load.s.pri n // номер ячейки в массиве [0,sizeof array)
#emit idxaddr // pri = адрес ячейки
#emit stor.s.pri addr
2) Если ячейка - обычная переменная.
#emit addr.pri local_var
Есть несколько способов получить адрес ячейки.
1) Ячейка - часть массива.
new addr;
#emit load.s.alt array // load.alt если массив глобальный
#emit load.s.pri n // номер ячейки в массиве [0,sizeof array)
#emit idxaddr // pri = адрес ячейки
#emit stor.s.pri addr
2) Если ячейка - обычная переменная.
#emit addr.pri local_var
"Флаги" работают по принципу логических переменных, в плане хранения двоичного значения, и это давно наталкивало меня на то, что адрес такой переменной можно получить, определив адрес ячейки одномерного массива. Собственно, вы данный метод и описали.
Если это так, то остаётся узнать, как осуществить проверку на существование определенного флага.
Как я себе это примерно представляю: если по имени флага адрес возвращает отрицательное значение, - то данный "флаг" в памяти не зарезервирован.
Подниму. Проверка флага на валидность остаётся актуальной.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot