1. Assembler / Говнокод #3989

    +237

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    mov ebx,eax
    xor eax,ebx
    mov eax,0
    cmp eax,ebx
    je metka1

    Запостил: Xekep, 15 Августа 2010

    Комментарии (8) RSS

    • mov ebx, eax
      test eax, eax
      jz metka1
      Ответить
      • А как же eax обнулить? Вдруг код дальше использует eax=0?
        mov ebx, eax
        xor eax, eax
        test ebx, ebx
        jz metka1
        Ответить
        • Хуйню написал, удалил, согласен
          Ответить
        • в этом случае можно и так:

          mov ebx, eax
          xor eax, eax ;zf = 0
          jz metka1 ;if (zf == 0) goto metka1

          т.е. целесообразно еще упростить:

          mov ebx, eax
          xor eax, eax
          jmp metka1
          Ответить
          • Jump здесь не так безусловен, как кажется на первый взгляд, и происходит только при ebx == 0.
            Алсо, после "xor eax, eax" zf == 1.
            Ответить
            • да, zf = 1;
              мну иногда переклинивает эта фишка:
              "если ноль значит еденица", и бывает путаюсь;

              хотя в принципе и с остальным тоже затуп...
              вот Arrest, правильно написал =)
              Ответить
    • Это компилятор выдавил или это рукописный код?
      Ответить
    • Конечно рукописный! Компиляторы такого говна на генерируют...
      Ответить

    Добавить комментарий