Гайд Error : 'naked' attribute only applies to non-member functions

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
18 Авг 2020
Сообщения
47
Реакции
8
Гайд сделан специально для CSGO Solution AKA zeeron.sosu если вы переустановили визуалку как и я (спасибо clang-tidy за лучший компилятор)

Hooks.hpp:
Expand Collapse Copy
    static /*__declspec(naked)*/ void __stdcall hkCreateMove_Proxy( int32_t iSequence, float_t flFrameTime, bool bIsActive );

Client.cpp:
Expand Collapse Copy
__declspec(naked) void __stdcall func(int32_t iSequence, float_t flFrameTime, bool bIsActive)//clang-tidy the best error generator
{
    __asm
    {
        push ebx
        push esp
        push dword ptr[esp + 20]
        push dword ptr[esp + 0Ch + 8]
        push dword ptr[esp + 10h + 4]
        call C_Hooks::hkCreateMove
        pop ebx
        retn 0Ch
    }
}
void __stdcall C_Hooks::hkCreateMove_Proxy(int32_t iSequence, float_t flFrameTime, bool bIsActive)
{
    func(iSequence, flFrameTime, bIsActive);
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Гайд сделан специально для CSGO Solution AKA zeeron.sosu если вы переустановили визуалку как и я (спасибо clang-tidy за лучший компилятор)

Hooks.hpp:
Expand Collapse Copy
    static /*__declspec(naked)*/ void __stdcall hkCreateMove_Proxy( int32_t iSequence, float_t flFrameTime, bool bIsActive );

Client.cpp:
Expand Collapse Copy
__declspec(naked) void __stdcall func(int32_t iSequence, float_t flFrameTime, bool bIsActive)//clang-tidy the best error generator
{
    __asm
    {
        push ebx
        push esp
        push dword ptr[esp + 20]
        push dword ptr[esp + 0Ch + 8]
        push dword ptr[esp + 10h + 4]
        call C_Hooks::hkCreateMove
        pop ebx
        retn 0Ch
    }
}
void __stdcall C_Hooks::hkCreateMove_Proxy(int32_t iSequence, float_t flFrameTime, bool bIsActive)
{
    func(iSequence, flFrameTime, bIsActive);
}
Ну так это у тебя с визуалкой траблы.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.


The guide was made specifically for CSGO Solution AKA zeeron.sosu if you reinstalled the visual like me (thanks to clang-tidy for the best compiler)

Hooks.hpp:
Expand Collapse Copy
 static /*__declspec(naked)*/ void __stdcall hkCreateMove_Proxy( int32_t iSequence, float_t flFrameTime, bool bIsActive );

Client.cpp:
Expand Collapse Copy
__declspec(naked) void __stdcall func(int32_t iSequence, float_t flFrameTime, bool bIsActive)//clang-tidy the best error generator
{
    __asm
    {
        push ebx
        push esp
        push dword ptr[esp + 20]
        push dword ptr[esp + 0Ch + 8]
        push dword ptr[esp + 10h + 4]
        call C_Hooks::hkCreateMove
        pop ebx
        retn 0Ch
    }
}
void __stdcall C_Hooks::hkCreateMove_Proxy(int32_t iSequence, float_t flFrameTime, bool bIsActive)
{
    func(iSequence, flFrameTime, bIsActive);
}
? all of it is wrong.
 
help pls, dont worked
 
не докачал компилятор clang

У него верcия LLVM обновилась до 15, а там прикол в виде:
1674335119867.png
 
А в чём вообще прикол юзать этот clang, он типо быстрее? Старый добрый msvc не чем не хуже
 
А в чём вообще прикол юзать этот clang, он типо быстрее? Старый добрый msvc не чем не хуже
we (yougame users) обожаем самые логичные реализации UB!!!!
MSVC - наше всё!
Я ЛИЧНО вложил в MSFT все сбережения семьи!
WE DA BEST:
Expand Collapse Copy
template <typename A, typename B>
struct BitCast
{
    static_assert(std::is_pod<A>(), "BitCast<A, B> : A must be plain old data type.");
    static_assert(std::is_pod<B>(), "BitCast<A, B> : B must be plain old data type.");
    static_assert(sizeof(A) == sizeof(B), "BitCast<A, B> : A and B must be the same size.");
    static_assert(alignof(A) == alignof(B), "BitCast<A, B> : A and B must have the same alignment.");
    //
    union
    {
        A a;
        B b;
    };
    //
    constexpr BitCast(A const & value) noexcept : a{ value } {}
    constexpr BitCast(B const & value) noexcept : b{ value } {}
    //
    operator B const & () const noexcept { return b; }
};

float XOR(float a, float b) noexcept
{
    return BitCast<uint32_t, float>{ BitCast<float, uint32_t>{a} ^ BitCast<float, uint32_t>{b} };
}
msvc:
Expand Collapse Copy
float XOR(float,float) PROC                                  ; XOR, COMDAT
        push    ecx
        movss   xmm0, DWORD PTR _a$[esp]
        movss   DWORD PTR $T1[esp+4], xmm0
        movss   xmm0, DWORD PTR _b$[esp]
        movss   DWORD PTR $T2[esp], xmm0
        mov     eax, DWORD PTR $T2[esp]
        xor     eax, DWORD PTR $T1[esp+4]
        mov     DWORD PTR $T3[esp], eax
        fld     DWORD PTR $T3[esp]
        pop     ecx
        ret     0

clang:
Expand Collapse Copy
XOR(float, float):                               # @XOR(float, float)
        xorps   xmm0, xmm1
        ret
 
Гайд сделан специально для CSGO Solution AKA zeeron.sosu если вы переустановили визуалку как и я (спасибо clang-tidy за лучший компилятор)

Hooks.hpp:
Expand Collapse Copy
    static /*__declspec(naked)*/ void __stdcall hkCreateMove_Proxy( int32_t iSequence, float_t flFrameTime, bool bIsActive );

Client.cpp:
Expand Collapse Copy
__declspec(naked) void __stdcall func(int32_t iSequence, float_t flFrameTime, bool bIsActive)//clang-tidy the best error generator
{
    __asm
    {
        push ebx
        push esp
        push dword ptr[esp + 20]
        push dword ptr[esp + 0Ch + 8]
        push dword ptr[esp + 10h + 4]
        call C_Hooks::hkCreateMove
        pop ebx
        retn 0Ch
    }
}
void __stdcall C_Hooks::hkCreateMove_Proxy(int32_t iSequence, float_t flFrameTime, bool bIsActive)
{
    func(iSequence, flFrameTime, bIsActive);
}
puking and shitting at the same time.
why?
have you looked at what the naked attribute actually does? do you know what a stack is?
 
we (yougame users) обожаем самые логичные реализации UB!!!!
MSVC - наше всё!
Я ЛИЧНО вложил в MSFT все сбережения семьи!
WE DA BEST:
Expand Collapse Copy
template <typename A, typename B>
struct BitCast
{
    static_assert(std::is_pod<A>(), "BitCast<A, B> : A must be plain old data type.");
    static_assert(std::is_pod<B>(), "BitCast<A, B> : B must be plain old data type.");
    static_assert(sizeof(A) == sizeof(B), "BitCast<A, B> : A and B must be the same size.");
    static_assert(alignof(A) == alignof(B), "BitCast<A, B> : A and B must have the same alignment.");
    //
    union
    {
        A a;
        B b;
    };
    //
    constexpr BitCast(A const & value) noexcept : a{ value } {}
    constexpr BitCast(B const & value) noexcept : b{ value } {}
    //
    operator B const & () const noexcept { return b; }
};

float XOR(float a, float b) noexcept
{
    return BitCast<uint32_t, float>{ BitCast<float, uint32_t>{a} ^ BitCast<float, uint32_t>{b} };
}
msvc:
Expand Collapse Copy
float XOR(float,float) PROC                                  ; XOR, COMDAT
        push    ecx
        movss   xmm0, DWORD PTR _a$[esp]
        movss   DWORD PTR $T1[esp+4], xmm0
        movss   xmm0, DWORD PTR _b$[esp]
        movss   DWORD PTR $T2[esp], xmm0
        mov     eax, DWORD PTR $T2[esp]
        xor     eax, DWORD PTR $T1[esp+4]
        mov     DWORD PTR $T3[esp], eax
        fld     DWORD PTR $T3[esp]
        pop     ecx
        ret     0

clang:
Expand Collapse Copy
XOR(float, float):                               # @XOR(float, float)
        xorps   xmm0, xmm1
        ret
Это всё никому не нужно, все эти крэнги кленги хуенги, std:super_puper_c++ , весь этот модерн в итоге даёт прибавку максимум 2-3 фпс в игре, лучше писать обычный код который можно запустить на любой платформе и не ебать мозг не себе не людям.
 
Последнее редактирование:
puking and shitting at the same time.
why?
have you looked at what the naked attribute actually does? do you know what a stack is?
Я знаю что такое стек. Если тебе что-то не нравится в моей реализации, то можешь, пожалуйста, не писать. Лучше бы не умничал и написал свою реализацию.
 
/del
 
Последнее редактирование:
Назад
Сверху Снизу