• Какие программы можно написать на C#?

    @Dron_000
    За PInvoke - спасибо, при случае посмотрю.
    Ошибся в том что ранее говорил про С++VS19/VS13.
    Теперь же предлагаю публике скромное развлечение С#VS19.
    ***Пример первый.
    static void Main(string[] args)
            {
                int a = 0;
                for (int i = 0; i < 10; i++)
                {
                    a = 2;
                }
                a = 3;
            }

    int a = 0;
    014A0884  xor         edx,edx  
    014A0886  mov         dword ptr [ebp-40h],edx  
                for (int i = 0; i < 10; i++)
    014A0889  xor         edx,edx  
    014A088B  mov         dword ptr [ebp-44h],edx  
    014A088E  nop  
    014A088F  jmp         ConsoleApp3.Program.Main(System.String[])+055h (014A089Dh)  
                {
    014A0891  nop  
                    a = 2;
    014A0892  mov         dword ptr [ebp-40h],2  
                }
    014A0899  nop  
                for (int i = 0; i < 10; i++)
    014A089A  inc         dword ptr [ebp-44h]  
    014A089D  cmp         dword ptr [ebp-44h],0Ah  
    014A08A1  setl        al  
    014A08A4  movzx       eax,al  
    014A08A7  mov         dword ptr [ebp-48h],eax  
    014A08AA  cmp         dword ptr [ebp-48h],0  
    014A08AE  jne         ConsoleApp3.Program.Main(System.String[])+049h (014A0891h)  
                a = 3;
    014A08B0  mov         dword ptr [ebp-40h],3  
            }

    ***Пример второй
    int a = 0;
                int i = 0;
                while (i < 10)
                {
                    i++;
                    a = 2;
                }
                a = 3;

    int a = 0;
    04F50884  xor         edx,edx  
    04F50886  mov         dword ptr [ebp-40h],edx  
                int i = 0;
    04F50889  xor         edx,edx  
    04F5088B  mov         dword ptr [ebp-44h],edx  
    04F5088E  nop  
    04F5088F  jmp         ConsoleApp3.Program.Main(System.String[])+055h (04F5089Dh)  
                {
    04F50891  nop  
                    i++;
    04F50892  inc         dword ptr [ebp-44h]  
                    a = 2;
    04F50895  mov         dword ptr [ebp-40h],2  
                }
    04F5089C  nop  
                while (i < 10)
    04F5089D  cmp         dword ptr [ebp-44h],0Ah  
    04F508A1  setl        al  
    04F508A4  movzx       eax,al  
    04F508A7  mov         dword ptr [ebp-48h],eax  
    04F508AA  cmp         dword ptr [ebp-48h],0  
    04F508AE  jne         ConsoleApp3.Program.Main(System.String[])+049h (04F50891h)  
                a = 3;
    04F508B0  mov         dword ptr [ebp-40h],3  
            }

    ***Пример третий
    int a = 0;
                int i = 0;
                do
                {
                    i++;
                    a = 2;
                }
                while (i < 10);
                a = 3;

    int a = 0;
    015F0884  xor         edx,edx  
    015F0886  mov         dword ptr [ebp-40h],edx  
                int i = 0;
    015F0889  xor         edx,edx  
    015F088B  mov         dword ptr [ebp-44h],edx  
                do
                {
    015F088E  nop  
                    i++;
    015F088F  inc         dword ptr [ebp-44h]  
                    a = 2;
    015F0892  mov         dword ptr [ebp-40h],2  
                }
    015F0899  nop  
                while (i < 10);
    015F089A  cmp         dword ptr [ebp-44h],0Ah  
    015F089E  setl        al  
    015F08A1  movzx       eax,al  
    015F08A4  mov         dword ptr [ebp-48h],eax  
    015F08A7  cmp         dword ptr [ebp-48h],0  
    015F08AB  jne         ConsoleApp3.Program.Main(System.String[])+046h (015F088Eh)  
                a = 3;
    015F08AD  mov         dword ptr [ebp-40h],3

    ***Пример последний
    int a = 0;
    00EF0887  xor         edx,edx  
    00EF0889  mov         dword ptr [ebp-40h],edx  
                int caseSwitch = 1;
    00EF088C  mov         dword ptr [ebp-44h],1  
    
                switch (caseSwitch)
    00EF0893  mov         eax,dword ptr [ebp-44h]  
    00EF0896  mov         dword ptr [ebp-4Ch],eax  
    00EF0899  mov         eax,dword ptr [ebp-4Ch]  
    00EF089C  mov         dword ptr [ebp-48h],eax  
    00EF089F  cmp         dword ptr [ebp-48h],1  
    00EF08A3  je          ConsoleApp3.Program.Main(System.String[])+069h (0EF08B1h)  
    00EF08A5  nop  
    00EF08A6  jmp         ConsoleApp3.Program.Main(System.String[])+060h (0EF08A8h)  
    00EF08A8  cmp         dword ptr [ebp-48h],2  
    00EF08AC  je          ConsoleApp3.Program.Main(System.String[])+073h (0EF08BBh)  
    00EF08AE  nop  
    00EF08AF  jmp         ConsoleApp3.Program.Main(System.String[])+07Dh (0EF08C5h)  
                {
                    case 1:
                        a=1;
    00EF08B1  mov         dword ptr [ebp-40h],1  
                        break;
    00EF08B8  nop  
    00EF08B9  jmp         ConsoleApp3.Program.Main(System.String[])+085h (0EF08CDh)  
                    case 2:
                        a= 2;
    00EF08BB  mov         dword ptr [ebp-40h],2  
                        break;
    00EF08C2  nop  
    00EF08C3  jmp         ConsoleApp3.Program.Main(System.String[])+085h (0EF08CDh)  
                    default:
                        a=0;
    00EF08C5  xor         edx,edx  
    00EF08C7  mov         dword ptr [ebp-40h],edx  
                        break;
    00EF08CA  nop  
    00EF08CB  jmp         ConsoleApp3.Program.Main(System.String[])+085h (0EF08CDh)  
                }
                a = 3;
    00EF08CD  mov         dword ptr [ebp-40h],3


    Теперь обоснование.
    Цикл с пост условием это одын CMP(сравнение) и одын J**(JE,JNE,JZ,JNZ И ТАК ДАЛЕЕ). Это эталон, без спорно. Минимализм всегда рулит!!!
    Цикл с пред условием (Как в BrainFack) одын CMP(сравнение) и одын J** и один безусловный переход JMP.

    Теперь посмотрите на примеры... С# VS 2019. Пошаговое исполнение, затем правая кнопка мыши и перейти к деассемблеру.

    Считаем количество CMP, J** и JMP. Думаю каждому будет интересно.
    Обратите внимание что CALL, J**, JPM, CMP - это ассемблерно долгие операции, по этому их стараются либо избегать , либо минимизировать.
    Предполагаю что все везде где J**, JPM, CMP больше чем по одной штуке - должно настораживать.
    Обратите внимание что CMP - операция не всегда обязательная, так как арифметические операции тоже меняют состояние флагов, а значит по ним можно ветвить.
    Теперь вопрос на засыпку, можно ли на ASM написать (оптимизировать) ветвления и циклы компактнее.

    Операции For и ForEach - достаточно медленные, через них бегают почти все. LinQ List.ForEach удивительно, но ведет себя также, либо быстрее. Проверял - сам писал тесты.
  • Как узнать метод хеширования по заранее известным строкам?

    @Dron_000
    "Собственно вопрос! Существуют ли сервисы или же ПО, для подбора (поиска) метода шифрования по заранее известным и распознанным строками шифра?"
    Вопрос был кодировку/шифровние или хеширование, в лучших традициях нечеткой логики. Также и отвечаю=)
  • Куда катится программирование?

    @Dron_000
    Программы то уже придумали, которые за вас все будут делать, например, Clickermann.
    Только вот Clickermann убили заборостроительные обновления Windows, время и отсутствие исходных кодов на GinHub.
  • Как узнать названия компонента?

    @Dron_000
    Да, да, это рефлексия, она рулит
  • Бывает ли тест на профориентацию программиста?

    @Dron_000
    Попробуй пройти простенький курс по не знаю чему, например по web (HTML, CSS, JS и куча современных фреймворков).
    Затем выйти на фриланс на узкий круг задач.
    Если окупят усилия (удастся заработать на связку бананов), вкладывайся уже дальше....
    Если нет, то возможно выгоднее сразу идти в манагеры (менеджеры).
    Без обид, современная школота именно так и поступает.
    ...........................................................................................................
    Программирование никому не нужно, кроме нас самих.
  • Куда катится программирование?

    @Dron_000
    Вот тебе и ассемблер на питоне)
  • Куда катится программирование?

    @Dron_000
    Роботы это фантазия.
    Каждый день вижу как народ из синтаксических ошибок вылезти не может.

    А интересные штуки, да разрабатывал, только нужны они за бесплатно, иначе error 404 или сто одна отговорка.
  • Куда катится программирование?

    @Dron_000
    Кодил всю школу до дымящейся клавиатуры ,5 лет учился в вузе, столько же в аспирантуре, чтобы потом 2,5 года не мочь найти работу.
    В it везде специалисты по заборостроению и самопиару, подставляют на лево и на право.
    Подскажите где найти пособие по самопиару, (чтобы быть на равных)!
    Сейчас насилу устроился не совсем по специальности, работу не предлагать.
    Продолжаю кодить, расходники клава плюс мышь в год до микросхем.