Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 6 из 6
  1. #1
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±

    Адрес флага

    Требуется проверить валидность флага, то бишь его наличие.
    Собственно, вопрос: по какой закономерности можно определить его адрес? Насколько мне известно, принцип немного другой, нежели у простых переменных со смещением.

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Адрес какого флага? Если вы про битовые операции, то адрес "флагов" - адрес значения, поскольку Pawn хранит значения в ячейках по 32-бита.

  3. #3
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Адрес какого флага? Если вы про битовые операции, то адрес "флагов" - адрес значения, поскольку Pawn хранит значения в ячейках по 32-бита.
    Да, флагов, то бишь "экономных переменных".
    Если изъясняться точнее, то нужен адрес этой самой ячейки, зарезервированной в стеке, которая хранит значение определенного флага.

  4. #4
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Да, флагов, то бишь "экономных переменных".
    Если изъясняться точнее, то нужен адрес этой самой ячейки, зарезервированной в стеке, которая хранит значение определенного флага.
    Есть несколько способов получить адрес ячейки.
    1) Ячейка - часть массива.
    PHP код:
    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) Если ячейка - обычная переменная.
    PHP код:
    #emit addr.pri local_var 

  5. #5
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Есть несколько способов получить адрес ячейки.
    1) Ячейка - часть массива.
    PHP код:
    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) Если ячейка - обычная переменная.
    PHP код:
    #emit addr.pri local_var 
    "Флаги" работают по принципу логических переменных, в плане хранения двоичного значения, и это давно наталкивало меня на то, что адрес такой переменной можно получить, определив адрес ячейки одномерного массива. Собственно, вы данный метод и описали.
    Если это так, то остаётся узнать, как осуществить проверку на существование определенного флага.
    Как я себе это примерно представляю: если по имени флага адрес возвращает отрицательное значение, - то данный "флаг" в памяти не зарезервирован.
    Последний раз редактировалось SooBad; 13.05.2017 в 23:35.

  6. #6
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Подниму. Проверка флага на валидность остаётся актуальной.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •