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

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    sub1:
        ; ...
        push sub2.end
    sub2:
        ; ...
        ret
    .end:
        ; ...
        ret

    Это нормально? Или я мудэ?

    666_N33D135, 19 Июля 2018

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

    −1

    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
    ; минимальная .COM программа, которую я смог высрать в ascii
    ; генерит ret и передаёт на него управление
    ; пробел (and r/m8, reg) я тоже не использовал
    ; писалась в hex-кодах
    
    push 314ah
    pop ax
    xor ax, 3070h
    push ax
    pop bx
    pop ax
    push ax
    xor ah, [bx]
    sub [bx], ah
    pop ax
    push ax
    dec ax
    xor ax, 3c3ch
    xor bx, ah
    jnz 013ah

    hJ1X5p0P[XP2'('XPH5<<0'u!
    Мой малинькый скукожоный моск очинь долго мучился, прежде чем родить это. Так что, не судити строго. :)

    666_N33D135, 11 Июля 2018

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

    0

    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
    getword:
        push ebx ecx esi edi
        cmp al, ' '
        jbe .be
        mov byte [.b1], 0x74
        mov byte [.b2], 0x74
        jmp .start
    .be:
        mov byte [.b1], 0x73
        mov byte [.b2], 0x73
    .start:
        mov edi, _tib
        mov ebx, edi
        add ebx, [_ntib]
        add edi, [_toin]
    .l1:
        cmp edi, ebx
        jae .l3
        scasb
    .b1:jae .l1
        mov esi, edi
        mov edi, [_here]
        inc edi
        dec esi
        xor ecx, ecx
    .l2:
        cmp esi, ebx
        jae .l3
        cmp al, [esi]
    .b2:jae .l3
        movsb
        inc ecx
        jmp .l2
    .l3:
        mov eax, [_here]
        mov [eax], cl
        sub esi, _tib - 1
        mov [_toin], esi
        pop edi esi ecx ebx
        ret

    Оооооо даааааааааа!

    666_N33D135, 21 Июня 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    global _start
    _start:
     mov ebx,0
     mov eax,1
     int 0x80

    https://habr.com/company/flant/blog/413959/

    Объясните для тупых, как программа в 3 команды может занимать аж 352 байта?
    Помню были приколы, когда в блокноте или пейнте писали бинарники.

    guestinxo, 15 Июня 2018

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

    0

    1. 1
    2. 2
    add    bp, 4 ; 83C504
    lea    bp, [bp + 4] ; 8D6E04

    А они ещё говорят, что первого байта для всех КОПов не хватает, и ввели дополнительный.

    666_N33D135, 11 Июня 2018

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

    +1

    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
    tms     код DSP   пример MMACF32
    
          msubf32      MR1,MR1,MR2        ;
       || mmov32  @point14,mr0            ;
          mmov32  @point15,mr1            ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          mmov32       mr2,@point01         ;     01
          msubf32      mr2,mr2,mr1          ;     01-15
       || mmov32       mr1,@_cos2           ;           B
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          mmpyf32      mr2,mr2,mr1          ;mr2=(01-15)B
       || mmov32       mr1,@point02         ;     02
          msubf32      mr0,mr1,mr0          ;mr0=(02-14)
       || mmov32       mr1,@_cos4           ;           C
          mmov32       mr3,@point00         ;     00
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          mmacf32      mr3,mr2,mr2,mr1,mr0  ;mr3=00+(01-15)B mr2=(02-14)C
       || mmov32       mr0,@point03         ;
          mmov32       mr1,@point13         ;
          msubf32      mr0,mr0,mr1          ;
       || mmov32       mr1,@_cos6           ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          mmacf32      mr3,mr2,mr2,mr1,mr0  ;mr3=00+(01-15)B+(02-14)C mr2=(03-13)D
       || mmov32       mr0,@point05         ;
          mmov32       mr1,@point11         ;
          msubf32      mr0,mr0,mr1          ;
       || mmov32       mr1,@_cos10          ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ...............

    maxxx, 09 Октября 2017

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

    0

    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
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    tms часть коррелятора
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               movl          XAR6     ,#str_korel     ;
               movl          XAR7     ,#str_f1_faz    ;
               mov            AH      ,@@dlin_mass    ;
               dec            AH                      ;
               movb           AL      ,#0             ;
               movl          XAR1     ,ACC            ;
               movz           AR2     ,AH             ;
               mov     @@max_num      ,AL             ;
               mov   @@start_num      ,AR1            ;
               subb          XAR2     ,#1             ;
               mpy           ACC      ,@@index_f      ,#max_f__faz*dln_f__faz
               add           ACC      ,@@start_base   ;
               addl          XAR7     ,ACC            ;
               movb          XAR3     ,#0             ;
               movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,@@temp_R       ;
               movl            P      ,*+XAR7[AR0]    ;pl=alp ph=R
               mpyu          ACC      ,T     ,PH      ;R0
               mov    @@factor_R      ,AH             ;
    loopi_0:   movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,#0             ;
               movl          ACC      ,*+XAR7[AR0]    ;
               sub            AL      ,PL             ;alpa<0
               cmp            AL      ,@@factor_alp   ;
               movb            T      ,#1            ,LO
               sub            AH      ,PH             ;
               abs           ACC                      ;
               cmp            AH      ,@@factor_R     ;
               movb            T      ,#0            ,HI
               mov            AL      ,T              ;
               add     @@max_num      ,AL             ;
               banz       loopi_0     ,AR2--          ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               movz           AR2     ,@@dlin_mass    ;
               subb          XAR2     ,#3             ;
    zabul:     movz           AR0     ,*+XAR6[AR1%++] ;
               push           AR3:AR2                 ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               mov     @@start_n      ,AR1            ;
               movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,@@temp_R       ;
               movl            P      ,*+XAR7[AR0]    ;
               mpyu          ACC      ,T     ,PH      ;
               mov    @@factor_R      ,AH             ;
               movb       @@max_n     ,#0           ,UNC
    loopi_1:   movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,#0             ;
               movl          ACC      ,*+XAR7[AR0]    ;
               sub            AL      ,PL             ;alpa<0
               cmp            AL      ,@@factor_alp   ;
               movb            T      ,#1            ,LO
               sub            AH      ,PH             ;
               abs           ACC                      ;
               cmp            AH      ,@@factor_R     ;
               movb            T      ,#0            ,HI
               mov             AL     ,T              ;
               add       @@max_n      ,AL
               banz       loopi_1     ,AR2--
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    loopi_2:   movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,#0             ;
               movl          ACC      ,*+XAR7[AR0]    ;
               sub            AL      ,PL             ;alpa<0
               cmp            AL      ,@@factor_alp   ;
               movb            T      ,#1            ,LO
               sub            AH      ,PH             ;
               abs           ACC                      ;
               cmp            AH      ,@@factor_R     ;
               movb            T      ,#0            ,HI
               mov            AL      ,T              ;
               add       @@max_n      ,AL             ;
               banz       loopi_2     ,AR3--          ;
               pop            AR3:AR2                 ;

    maxxx, 06 Октября 2017

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

    0

    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
    #define SPLICE(a,b) SPLICE_1(a,b)
    #define SPLICE_1(a,b) SPLICE_2(a,b)
    #define SPLICE_2(a,b) a##b
    #define LL(a,b) SPLICE_2(a,b)
    #define L(a) LL(a,LOC)
    
    
    #define LOC sub1
    .func sub1
    sub1:
        ljmp L(L1)
    
    L(L1):
        nop
    .endfunc
    
    #define LOC sub2
    .func sub2
    sub2:
        ljmp L(L1)
    
    L(L1):
        nop
    .endfunc

    Когда захотел сделать local labels в ассемблере через сишный препроцессор

    j123123, 12 Мая 2017

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

    −715

    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
    return instruction emitted twice with branch target inbetween
    
    function
    
    unsigned int fact( unsigned int n) { return n < 1 ? 1 : n*fact(n-1); }
    
    produces
    
    fact:
    .LFB0:
            .cfi_startproc
            testl   %edi, %edi
            movl    $1, %eax
            je      .L4
            .p2align 4,,10
            .p2align 3
    .L3:
            imull   %edi, %eax
            subl    $1, %edi
            jne     .L3
            rep ret # <-- this instruction can be removed
    .L4:
            rep ret
            .cfi_endproc
    .LFE0:
            .size   fact, .-fact
            .section        .text.unlikely

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71923 даже факториал не могут скомпилировать нормально

    j123123, 25 Июля 2016

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

    +70

    1. 1
    https://youtu.be/hB6eY73sLV0?t=241

    Исполнение произвольного кода(в данном случае Flappy Bird) в Super Mario World. Запись инструкций в память происходит посредством прыжков в нужных координатах.

    j123123, 20 Июня 2016

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