Задать вопрос
  • Что не так в Eclipse IDE?

    @Nordman99 Автор вопроса

    char x[]="w";
    printf(x);


    Так тоже не сработало ))
  • Что не так в Eclipse IDE?

    @Nordman99 Автор вопроса
    Да действительно, странно что в МСВС мой вариант сработал ))
  • Что не так в Eclipse IDE?

    @Nordman99 Автор вопроса
    Да действительно, странно что в МСВС мой вариант сработал ))
  • Как работать с ленточным накопителем?

    @Nordman99 Автор вопроса
    Не, в винде и бэкапы предполагается создавать во всяких симантеках/акронисах
  • Как правильно оформить inline вставку ассемблера в отдельный код для MASM?

    @Nordman99 Автор вопроса
    none7, спасибо

    Независимо от флагов stdcall/cdecl, компилятор использует fastcall


    Для функций, объявленных с naked атрибутом, компилятор создает код без пролога и кода эпилога. Эту возможность можно использовать, чтобы создавать свой собственный код на языке ассемблера и вставлять его в качестве пролога и эпилога. Функции с атрибутом naked особенно полезны для написания драйверов виртуальных устройств. Обратите внимание, что naked атрибут допустим только на платформах x86 и ARM и недоступен в x64.

    а где про это все поподробней можно почитать, какую литературу посоветуете? Я так понимаю что это относится к области системного программирования в Windows?
  • Как правильно оформить inline вставку ассемблера в отдельный код для MASM?

    @Nordman99 Автор вопроса
    Спасибо! но там в проекте еще один файл .cpp - https://pastebin.com/2cJEEhk6
    Там немного сложнее, там я увидел вставки ассемблера такого вида:

    /**
     * This macro outputs the prolog code for a naked intercept function. It
     * should be the first code in the function.
     */
    #define INTERCEPT_PROLOG()                          \
    
    
    
    	__asm                                           \
        {                                               \
            __asm push    ebp                           \
            __asm mov     ebp,            esp           \
            __asm sub     esp,            __LOCAL_SIZE  \
        }
    
    /**
     * This macro outputs the epilog code for a naked intercept function. It
     * should be the last code in the function. argsSize is the number of 
     * bytes for the argments to the function (not including the the api parameter).
     * The return from the function should be stored in the "result" variable, and
     * the "stdcall" bool variable determines if the function was called using the
     * stdcall or cdecl calling convention.
     */
    #define INTERCEPT_EPILOG(argsSize)                  \
        __asm                                           \
        {                                               \
            __asm mov     eax,            result        \
            __asm cmp     stdcall,        0             \
            __asm mov     esp,            ebp           \
            __asm pop     ebp                           \
            __asm jne     stdcall_ret                   \
            __asm ret     4                             \
        __asm stdcall_ret:                              \
            __asm ret     (4 + argsSize)                \
        }
    
    /**
     * This macro outputs the epilog code for a naked intercept function that doesn't
     * have a return value. It should be the last code in the function. argsSize is the
     * number of  bytes for the argments to the function (not including the the api
     * parameter). The "stdcall" bool variable determines if the function was called using
     * the stdcall or cdecl calling convention.
     */
    #define INTERCEPT_EPILOG_NO_RETURN(argsSize)        \
        __asm                                           \
        {                                               \
            __asm cmp     stdcall,        0             \
            __asm mov     esp,            ebp           \
            __asm pop     ebp                           \
            __asm jne     stdcall_ret                   \
            __asm ret     4                             \
        __asm stdcall_ret:                              \
            __asm ret     (4 + argsSize)                \
        }


    Зачем __asm перед каждой строчкой?
    Я попробовал вынести код
    __asm                                           \
        {                                               \
            __asm push    ebp                           \
            __asm mov     ebp,            esp           \
            __asm sub     esp,            __LOCAL_SIZE  \
        }


    в отдельную asm функцию поубирав __asm но компилятро как и предпологалось стал ругатся что __LOCAL_SIZE неопределена (в asm файле), да она и в cpp неопределена, а где её взять для передачи в asm функцию?
    Также потом компилятор ругается на неизвестную переменную naked в коде
    #pragma auto_inline()
    
    __declspec(naked) int DecodaOutput(unsigned long api, lua_State* L)
    {
    
        int result;
        bool stdcall;
    
        INTERCEPT_PROLOG()
    
        result = DecodaOutputWorker(api, L, stdcall);
    
        INTERCEPT_EPILOG(4)
    
    }


    Ошибка C2485 naked: неизвестный расширенный атрибут LuaDll.cpp 504
  • Как правильно оформить inline вставку ассемблера в отдельный код для MASM?

    @Nordman99 Автор вопроса
    none7, код не мой и я ничего сам там не придумывал, код
    mov     stackLeftOver,  esp
            push    arg1
            call    function
            mov     final,          eax
            mov     eax,            stackLeftOver
            sub     eax,            esp
            mov     stackLeftOver,  eax
            add     esp,            stackLeftOver

    был в оригинале, под 32 бит компилится, мой вопрос изначально был - как переделать ассемблерную inline вставку во внешнюю ассемблерную функцию для компиляции в 64 бит
  • Как правильно оформить inline вставку ассемблера в отдельный код для MASM?

    @Nordman99 Автор вопроса
    none7, Спасибо попробую, но все таки, так как компилить из исходников люблю, видимо с ilnline вставками ассеблера столкнутся придется еще не раз, и хотелось бы научится их правильно переделывать под 64 бит, погуглил и на основе примеров из инета, из интереса, сделал все вот так:

    bool GetIsStdCallConvention(void* function, void* arg1, void** result)
    {
    
    
        int stackLeftOver;
        int final;
    
    	extern "C"
    {
        void Rememberthestackpointer1(int stackLeftOver, int final, int arg1 );
    }


    asm :

    EXTERN stackLeftOver:DWORD
    EXTERN final:DWORD
    EXTERN arg1:DWORD
    
    .CODE
    readName PROTO C
    Rememberthestackpointer1 PROC
            mov     stackLeftOver,  esp
            push    arg1
            call    function
            mov     final,          eax
            mov     eax,            stackLeftOver
            sub     eax,            esp
            mov     stackLeftOver,  eax
            add     esp,            stackLeftOver
    		ret
    Rememberthestackpointer1 ENDP
    END


    Но что то компилятор ругается на строчки 10 и 11:

    Ошибка A2070 invalid instruction operands LuaInject C:\Progs\decoda-win64\src\LuaInject\StdCall1.asm 10

    Ошибка A2006 undefined symbol : function LuaInject C:\Progs\decoda-win64\src\LuaInject\StdCall1.asm 11

    Ошибка MSB3721 выход из команды "ml64.exe /c /nologo /Zi /Fo"obj\x64\Debug\LuaInject\StdCall1.obj" /W3 /errorReport:prompt /Ta..\src\LuaInject\StdCall1.asm" с кодом "1". LuaInject C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\masm.targets 70

    А как правильно бы надо?
  • Как правильно оформить inline вставку ассемблера в отдельный код для MASM?

    @Nordman99 Автор вопроса
    А что тогда делать? выпилить этот кусок кода совсем? и на что его заменить?
  • Как в Postgresql создать новую базу данных в новом каталоге?

    @Nordman99 Автор вопроса
    Создал новый тэйблспейс и что дальше? Это ведь не база данных, а базу данных в новом каталоге как создать?
  • Как сделать чтобы службы которые нельзя вручную включать/выключать стало можно?

    @Nordman99 Автор вопроса
    Все твикеры специалистами посылаются в ж... Так как все твикеры твикают путем внесения изменений в системном реестре, ну и еще в групповых политиках, а специалист должен уметь делать это сам, т.к. кроме твиков твикеры могут еще неизвестно что натворить в системе
    Там же можно получить права к любому файлу поставив определённую галочку,
    - это вообще непонятно к какому месту сказано, права доступа к любому файлу можно итак получить без всяких твикеров, короче ответ не в тему
  • Как найти строку в БД, не зная названия таблицы и столбца?

    @Nordman99 Автор вопроса
    Спасибо, где в примере надо вставить мою искомую строку? вместо Mars? Еще чтолибо править под мою базу (её название, название таблиц) надо?
  • Почему не удаляются строки из таблицы?

    @Nordman99 Автор вопроса
    Да все верно - оказалось в таблице стоит триггер на действие delete, делая вместо delete чтото другое, спасибо!
  • Что есть в Linux чего нету в Windows для java/Python/Scala/Golang/Kotlin программиста?

    @Nordman99
    да что значит быстрее работает винда? Чем ты измеряешь? Что смотришь

    Чем - глазами, мною проверено не раз - при одинаковых нагрузках на одном и том же компе при которых винда уже уходит в кому и глубокие тормоза линукс еще вполне норм работает, причем даже тормозов может быть незаметно, у вас видимо либо скудный опыт работы на компьютере либо родители купили дорогущий суперкомпьютер на котором ничего не тормозит, а так вам для справки - почти все суперомпьютеры в мире работают на линуксе как думаете почему?
    Винда мало что делает с приложением.
    зато винда отжирает немалую долю работы ЦПУ и оперативки и в итоге запущенным приложениям остается меньше, и к тому же эта ваша фраза вообще говорит о вашей компьютерной малограмотности - ОС не "мало что делает с приложением" а ОС вообще делает для приложения все! - все чтобы оно запустилось и работало, и от того как ОС это делает и зависит быстродействие и все остальное, т.к. любое приложение для своего запуска и работы использует средства ОСи - API и прочее и от того как в ОСи это все реализовано все и зависит, а то если бы приложениям ОС для запуска и работы была бы не нужна то тогда и ОСи никакие были бы не нужны - проги бы запускались бы сами по себе и работали
  • Что есть в Linux чего нету в Windows для java/Python/Scala/Golang/Kotlin программиста?

    @Nordman99
    DevMan, щас все быстро устаревает - сегодня нормальный комп а лет через 5-10 уже старье будет
  • Что есть в Linux чего нету в Windows для java/Python/Scala/Golang/Kotlin программиста?

    @Nordman99
    Hemul GM, только к сожалению не всё из этого надо простым юзерам, возникает даже ощущение что винда на компе работает сама по себе и для себя, я даже пробовал в винде отключать вообще все что можно отключить для увеличения быстродействия - в итоге винда быстрее все равно не стала
  • В чем отличия оригинальной сборки Postgresql от 1Cной Postgresql?

    @Nordman99 Автор вопроса
    Ясно, получается что 1Сный постгре можно использовать как бесплатную замену MSSQL )))) Для изучения и работы )))
  • Почему при отключении брэндмауэра Windows доступ к компьютеру не открывается а наоборот блокируется?

    @Nordman99 Автор вопроса
    ни когда не ставьте два антивируса

    Разве я чтото сказал про два антивируса?
    но и защищает. сосед по локалке принес флешку с вирусом, который умеет распространятся как червь

    Хороший антивирь на который своевременно ставятся обновления все прибьет, тем более мощный Касперский, да и еще плюс если пользователи работают без админских прав, как ограниченные, то и любой вирус будет запущен с их правами, даже если антивирь его пропустит то без админских прав никакой вирь ничего не сделает, впрочем касперский не пропустит, впрочем это уже отклонение от темы, я нее этот вопрос тут поднял, поэтому при остутствии интернета фаерволл практически не нужен
  • Почему при отключении брэндмауэра Windows доступ к компьютеру не открывается а наоборот блокируется?

    @Nordman99 Автор вопроса
    Yan, можно попробовать, но даже если это и решит проблему то отключать его все равно нельзя, впрочем тогда ясно в чем проблема