Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама



**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 100руб/мес, Текстовая 50руб/мес.
Показано с 1 по 5 из 5
  1. #1
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    549
    Репутация:
    251 ±

    GetNumberOfArguments - быстрая реализация numargs

    Описание:
    Вычисляет количество аргументов в функции.

    Параметры:
    -

    Возвращаемое значение:
    Возвращает количество аргументов в функции.

    Плюсы реализации:
    • Быстрое вычисление количества аргументов. Таким образом, это функция быстрее numargs с JIT в 3 раза, а без него в 2 раза.

    Минусы реализации:
    • N/A

    Код:
    PHP код:
    stock
        GetNumberOfArguments
    ()
    {
        
    #emit load.s.pri 0x0 // узнаем FRM прежней функции.
        #emit add.c 0x8 // смещение на 8 байт.
        #emit load.i // читаем.
        #emit shr.c.pri 2 // побитовый сдвиг в право - деление на 4
        #emit retn // возвращаем.
        
    return 0;

    Пример использования:
    PHP код:
    main()
    {
        
    printf("Arguments: %d"GetNumberOfArguments());
        
        
    SomeFunction(1345);
    }

    stock
        SomeFunction
    (...)
    {
        
    printf("Arguments: %d"GetNumberOfArguments());

    См. также:

    Автор: VVWVV

    Исключительно для pro-pawn.ru

    Копирование данной статьи на других ресурсах без разрешения автора запрещено.
    Последний раз редактировалось VVWVV; 30.12.2016 в 04:18.

  2. 4 пользователя(ей) сказали cпасибо:
    Daniel_Cortez (24.12.2016)Osetin (24.12.2016)Seregamil (24.12.2016)[ForD] (24.12.2016)
  3. #2
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,557
    Репутация:
    2061 ±
    Здорово видеть, что всё больше и больше людей на форуме начинают работать с #emit. Вот только непонятно, в чём профит записывать числа в хексе, если они не отрицательные. Тем более, что в SHR операнд записан в десятичном виде.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  4. #3
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    549
    Репутация:
    251 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Здорово видеть, что всё больше и больше людей на форуме начинают работать с #emit. Вот только непонятно, в чём профит записывать числа в хексе, если они не отрицательные. Тем более, что в SHR операнд записан в десятичном виде.
    Да, это хорошо. Впрочем, я давно уже начал с ним работать.

    Профит в том, что мне так удобнее видеть, где смещения, а где десятичные числа.
    Последний раз редактировалось VVWVV; 24.12.2016 в 14:40.

  5. #4
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,557
    Репутация:
    2061 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Профит в том, что мне так удобнее видеть, где смещения, а где десятичные числа.
    Да, только это не очень стыкуется с требованием записывать все отрицательные числа в шестнадцатеричном виде (компилятор не понимает знака "-" в #emit). Например, число -1 придётся записать как 0xFFFFFFFF и ты будешь путать его со смещением.
    Мало того, непостоянство между записью в хексе и в десятичном виде со стороны может показаться понтокодом.

    Впрочем, решать тебе, моё дело лишь предупредить.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  6. 2 пользователя(ей) сказали cпасибо:
    Osetin (24.12.2016)VVWVV (24.12.2016)
  7. #5
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    549
    Репутация:
    251 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Да, только это не очень стыкуется с требованием записывать все отрицательные числа в шестнадцатеричном виде (компилятор не понимает знака "-" в #emit). Например, число -1 придётся записать как 0xFFFFFFFF и ты будешь путать его со смещением.
    Мало того, непостоянство между записью в хексе и в десятичном виде со стороны может показаться понтокодом.

    Впрочем, решать тебе, моё дело лишь предупредить.
    Спасибо за совет. Однако такого ещё не происходило.

    Кстати, Y-Less недавно затрагивал эту тему на гитхабе. Если честно, то я надеюсь, что Zeex починит это.

 

 

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

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

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

Ваши права

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