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

    +197

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    ; загрузка из cfg-файла переменной Gravity
    seg011:06CA         fld     [dbl_45A48]   ; 0.2
    seg011:06CF         add     sp, -8
    seg011:06D2         fstp    [bp+var_16]   ; default=0.2
    seg011:06D6         push    ds
    seg011:06D7         mov     ax, offset aGravity
    seg011:06DA         push    ax            ; key="GRAVITY"
    seg011:06DB         wait
    seg011:06DD         push    cs
    seg011:06DE         call    near ptr cfg_ReadDbl
    seg011:06E1         add     sp, 12
    seg011:06E4         fstp    [curGravity]  ; cur=cfg_ReadDbl()
    ; проверка загруженного значения на диапазон [0,05..10,0]
    seg011:06E9         fld     [flt10]
    seg011:06EE         add     sp, -8
    seg011:06F1         fstp    [bp+var_16]   ; max = 10.0
    seg011:06F5         fld     [minGravity]
    seg011:06FA         add     sp, -8
    seg011:06FD         fstp    [bp+var_1E]   ; min = 0.05
    seg011:0701         fld     [curGravity]
    seg011:0706         add     sp, -8
    seg011:0709         fstp    [bp+var_26]   ; cur
    seg011:070D         wait
    seg011:070F         push    cs
    seg011:0710         call    near ptr CheckRangeDbl
    seg011:0713         fstp    st            ; результат нах...
    seg011:0716         add     sp, 24
    <....cut....>
    
    ; double CheckRangeDbl(double cur, double min, double max)
    seg011:0077 proc    CheckRangeDbl far
    seg011:0077 var_2   = word ptr -2
    seg011:0077 @@cur   = qword ptr  6
    seg011:0077 @@min   = qword ptr  0Eh
    seg011:0077 @@max   = qword ptr  16h
    seg011:0077         push    bp
    seg011:0078         mov     bp, sp
    seg011:007A         dec     sp
    seg011:007B         dec     sp
    seg011:007C         fld     [bp+@@cur]
    seg011:0080         fcomp   [bp+@@min]
    seg011:0084         fnstsw  [bp+var_2]
    seg011:0088         wait
    seg011:008A         mov     ax, [bp+var_2]
    seg011:008D         sahf
    seg011:008E         jnb     @@chk_max     ; if (cur < min)
    seg011:0090         fld     [bp+@@min]    ;     st(0) = min
    seg011:0094         jmp     @@exit
    seg011:0096 @@chk_max:                    ; else
    seg011:0096         fld     [bp+@@cur]
    seg011:009A         fcomp   [bp+@@max]
    seg011:009E         fnstsw  [bp+var_2]
    seg011:00A2         wait
    seg011:00A4         mov     ax, [bp+var_2]
    seg011:00A7         sahf
    seg011:00A8         jbe     @@ret_cur     ; if (cur > max)
    seg011:00AA         fld     [bp+@@max]    ;     st(0) = max
    seg011:00AE         jmp     @@exit
    seg011:00B0 @@ret_cur:                    ; else
    seg011:00B0         fld     [bp+@@cur]    ;     st(0) = cur
    seg011:00B4 @@exit:
    seg011:00B4         fst     [bp+@@cur]
    seg011:00B8         wait
    seg011:00BA         mov     sp, bp
    seg011:00BC         pop     bp
    seg011:00BD         retf                  ; return st(0)
    seg011:00BD endp    CheckRangeDbl

    Из старой, очень популярной игрухи (Scorshed Earth). Все как положено, подгружаемые из cfg-файла данные проходят проверку. Только вот результаты проверок (для double, для int и прочих типов) попросту отбрасываются :) Даже не знаю, как такое можно было накодить, на невнимательность непохоже - такого кода довольно много.

    DemonId7, 12 Июня 2011

    Комментарии (21)
  2. Assembler / Говнокод #6827

    +204

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    domain db "91.213.217.36"
    softname db "calc.exe",0
    .......................
    Makehttp proc
     lea edi,url
     mov eax,70747468h
     mov [edi],eax
     mov eax,3ah
     mov [edi+4],eax
     mov eax,2f2fh
     mov [edi+5],eax
     lea esi,domain
     xor ecx,ecx
     push edx
     xor edx,edx
     mov edx,7
     mov cx,sizeof domain
     dom:
     lodsb
     mov [edi+edx],al
     add edx,1
     loop dom
     mov eax,2fh
     mov [edi+edx],eax
     add edx,1
     lea esi,softname
     mov cx,sizeof softname
     gen:
     lodsb
     mov [edi+edx],al
     add edx,1
     loop gen
     pop edx
     xor eax,eax
     mov eax,1
     ret
    Makehttp endp

    comodo ругался на строку http:// говоря что вирус :)Наговноколил это и пошел спать :)

    koloss, 03 Июня 2011

    Комментарии (46)
  3. Assembler / Говнокод #6506

    +225

    1. 1
    2. 2
    xor	eax, eax
    mov	al, 0

    ragim, 28 Апреля 2011

    Комментарии (92)
  4. Assembler / Говнокод #6475

    +212

    1. 1
    2. 2
    3. 3
    sub eax, edx
    test eax, eax
    jl +$04

    dcc32
    Нафига вторая строчка?

    TarasB, 26 Апреля 2011

    Комментарии (89)
  5. Assembler / Говнокод #6463

    +247

    1. 1
    2. 2
    mov eax, eax			;without this crap, it fucks up
      mov ecx, ecx			;don't ask me why...

    нашел в инклудах к opengl

    ragim, 23 Апреля 2011

    Комментарии (15)
  6. Assembler / Говнокод #6452

    +234

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    00614A77  |.  8BF0          MOV ESI,EAX
    00614A79  |.  BB 01000000   MOV EBX,1
    00614A7E  |.  EB 01         JMP SHORT 00614A81
    00614A80  |>  43            /INC EBX
    00614A81  |>  3BF3           CMP ESI,EBX
    00614A83  |.  7C 07         |JL SHORT 00614A8C
    00614A85  |.  807C1F FF 20  |CMP BYTE PTR DS:[EDI+EBX-1],20
    00614A8A  |.^ 76 F4         \JBE SHORT 00614A80

    Оптимизация компилятора

    Xekep, 22 Апреля 2011

    Комментарии (20)
  7. Assembler / Говнокод #6404

    +225

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    .386
    .model flat,stdcall
     option  casemap:none
          include   c:\masm32\includes\windows.inc
          include   c:\masm32\includes\user32.inc
          include   c:\masm32\includes\kernel32.inc
          includelib c:\masm32\lib\user32.lib
          includelib c:\masm32\lib\kernel32.lib
     bufsize EQU 12
    .data
      a dd 300
      b dd 500
      d dd 300
      fmt db "Max = %2d",0
      buf db bufsize dup(0)
      ctrlf db 0dh,0ah
      stdout dd ?
      cWritten dd ?
      result dd ?
    .code
     start:
      invoke GetStdHandle,STD_OUTPUT_HANDLE
      mov stdout,eax
       mov eax,a            
       mov result,eax  ; изначально максимальный это a
       cmp eax,b       ; сравниваем со вторым числом
       jbe big1        ; если a<=b , значит b больше a
       ja min1         ; иначе a ещё максимальное
      big1:
        mov eax,b           
    	mov result,eax  ;теперь b максимальное
        cmp eax,d 
    	jbe big2   ; максимальное c 
    	jmp print
    	big2: 
    	  mov eax,d 
    	  mov result,eax ;максимальный c
    	  jmp print
      min1:
        mov eax,d
    	cmp eax,a
    	jbe big3
    	mov result,eax
    	jmp print
    	big3:
    	  mov eax,a
    	  mov result,eax
    	  jmp print
       print:
        mov edx,result
        invoke wsprintf, ADDR buf, ADDR fmt, edx
        invoke WriteConsoleA, stdout, ADDR buf, bufsize, ADDR cWritten, NULL
        invoke WriteConsoleA, stdout, ADDR ctrlf, 2, ADDR cWritten, NULL
     end start

    С ума сойти. И это сравнение трёх чисел, которое делается в два простейших условия...

    Ymilij, 19 Апреля 2011

    Комментарии (12)
  8. Assembler / Говнокод #6292

    +242

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    main:
    	mov a, P0
    	dec a
    	inc a
    	jnz __div_part
    	jmp __mul_part
    __mul_part:
    	// mul
    	mov r0, P1
    	mov r2, P2
    	call __Mul
    	mov P1, r0
    	mov P2, r1
    	jmp __end		
    __div_part:
    	// div
    	mov r0, P1
    	mov r2, P2
    	call __Div
    	mov P1, r0
    	mov P2, r1
    	jmp __end
    __end:	
    end

    процедура main лабы по mcs-51

    valik-32, 08 Апреля 2011

    Комментарии (19)
  9. Assembler / Говнокод #6150

    +230

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    org VECTORS
     dw metka1
     org 3feh
     dw start
    
     org 200h
    
    start:
    
     lda #0
     sta 0E0h
     sta 0E1h
     sta 0E2h
    
     clra
     lda #0f0h
     sta 4
     bset 5,0008h
     cli
     jmp $
    
    metka1:
    
     rol 0
     bcs metka2
    
     lda #070h
     sta 4
     lda #1
     sta 0E0h
     jmp metka3
    
    metka2:
    
     lda #0f0h
     sta 4
    
     lda 0E0h
     cmp 0E2h
     beq metka3
    
     lda #0
     sta 0E0h
     lda 0E1h
     inca
     sta 0E1h
     jmp metka4
    
    metka3:
    
     lda 0E1h
     inca
     sta 0E1h
    
    metka4:
     bset 2,0008h
     rti
    
    END

    типовик

    iliym, 31 Марта 2011

    Комментарии (3)
  10. Assembler / Говнокод #6013

    +240

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    lea    0x0(%esi),%esi
    sub    $0x1,%eax
    cmp    $0xffffffff,%eax
    je     0x8048e07
    mov    (%ecx,%eax,4),%esi
    test   %esi,%esi
    je     0x8048df8

    Чудеса оптимизации -О3 на gcc 4.4
    (код в интелловской аннотации, сначала источник, потом назначение)

    SIGSEGV, 17 Марта 2011

    Комментарии (27)