1. Список говнокодов пользователя digitalEugene

    Всего: 43

  2. C++ / Говнокод #28016

    +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
    #include <stdio.h>
    #include <stdint.h>
    
    int main(void)
    {
    	bool a = 0;
    	*((uint8_t*)&a) = 2;
    	if(!a)
    		printf("a false\n");
    	else
    		printf("a true\n");
    
    	return 0;
    
    }
    
    ------
    .LC1:
            .string "a true"
    main:
            push    rax
            mov     edi, OFFSET FLAT:.LC1
            call    puts
            xor     eax, eax
            pop     rdx
            ret

    какой ID)))

    digitalEugene, 15 Февраля 2022

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

    +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
    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
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    .org 22h
    dw @vbi
    
    .org 80h
    bpos: db 0h 0h
    vector: db 2h 1h
    
    process:
    	push %a
    	push %b
    	mov %a [@bpos] ; {h:x, l:y} ;
    	mov %b [@vector] ; {h:dx, l:dy} ;
    	add %ah %bh
    	add %al %bl
    	cmp %ah 11h
    	jng @.skip_xoverflow_handle
    	cmp %ah 14h
    	jg @.overflow_left
    	mov %ah 11h
    	jmp @.xoverflow_finally
    	.overflow_left:
    		mov %ah 0h
    	.xoverflow_finally:
    		neg %bh
    	.skip_xoverflow_handle:
    	cmp %al 5Ch
    	jng @.skip_yoverflow_handle
    	cmp %al 60h
    	jg @.overflow_up
    	mov %al 5Bh
    	jmp @.yoverflow_finally
    	.overflow_up:
    		mov %al 1h
    	.yoverflow_finally:
    		neg %bl
    	.skip_yoverflow_handle:
    	mov [@bpos] %a
    	mov [@vector] %b
    	pop %b
    	pop %a
    	ret
    	
    cls:
    	push %a
    	push %b
    	mov %a 3A98h
    	
    	.loop:
    		mov [%a + @T1] 0000h
    		sub %a 2h
    		jnz @.loop 
    	pop %b
    	pop %a
    	ret
    
    render:
    	push %a
    	push %b
    	push %c
    
    	mov %a [@bpos]  ; {h:x, l:y} ;
    	mov %b %al
    	mul %b 12h
    	add %b %ah
    	add %b @T1
    	
    	mov %c 8h
    	.loop:
    		movb [%b] FFh
    		add %b 12h
    		dec %c
    		jnz @.loop
    	
    	pop %c
    	pop %b
    	pop %a
    	ret	
    
    start:
    	mov %sp FFFFh
    	outb 20h 1h
    	outb 21h 16h
    	out  22h @T1
    	
    	mov %al 1h
    	int 10h
    	
    	.loop:
    		jmp @.loop
    
    vbi:
    	call @cls
    	call @render
    	call @process
    	ret
    
    .org 1000h
    T1:

    решил пойти по накатанному пути и добавил видеоконтроллер, пока только монохромная битовая карта 144x100, но большего и не надо
    сабж выводит на экран что отпрыгивает от стен, простое умножение компонента вектора на -1

    digitalEugene, 14 Февраля 2022

    Комментарии (71)
  4. Си / Говнокод #28009

    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
    #include <stdio.h>
    #include <setjmp.h>
    #include <assert.h>
    
    jmp_buf ebuf;
    
    void f2(void)
    {
    	longjmp(ebuf, (int)"kokoko");
    }
    
    int main(void)
    {
    	const char* i;
    	printf("petuhi ");
    	i = (const char*)setjmp(ebuf);
    	if (!i) 
    	{
    		f2();
    		printf ("moo ");
    	}
    	printf("%s\n", i);
    	return 0;
    }

    можно елду сделать

    digitalEugene, 14 Февраля 2022

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

    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
    .org 80h
    data:
    	db "Hello, world!\n"
    	
    wait:
    	.loop:
    		inb %cl E9h
    		cmp %cl 0h
    		jnz @.loop
    	ret
    		
    start:
    	mov %sp 300h
    	.loop:
    		mov %al [%b + @data]
    		inc %b
    		outb E9h %al
    		call @wait
    		cmp %al Ah
    		jnz @.loop
    	int 0h

    забацал port-mapped io, работает в отдельном потоке
    sudo bormand

    digitalEugene, 11 Февраля 2022

    Комментарии (19)
  6. C++ / Говнокод #28006

    0

    1. 1
    std::tie(v[0], v[1]) = std::make_tuple(v[1], v[0])

    какой swap)))

    digitalEugene, 11 Февраля 2022

    Комментарии (2)
  7. C++ / Говнокод #28005

    0

    1. 1
    std::tie(v[0], v[1]) = std::make_tuple(v[1], v[0])

    какой swap)))

    digitalEugene, 11 Февраля 2022

    Комментарии (0)
  8. C++ / Говнокод #28003

    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
    #define OPCODEFORMAT_CASE(opcode, format) case opcode: return format; break
    inline OpcodeFormat getOpcodeFormat(Opcode opcode)
    {
    	switch (opcode)
    	{
    		OPCODEFORMAT_CASE(NOP		, OPCODE);
    		OPCODEFORMAT_CASE(MOV_RR	, OPCODE_RR);
    		OPCODEFORMAT_CASE(MOV_RC	, OPCODE_RC);
    		OPCODEFORMAT_CASE(MOV_RM	, OPCODE_RM);
    		OPCODEFORMAT_CASE(MOV_MR	, OPCODE_MR);
    		OPCODEFORMAT_CASE(MOV_MC	, OPCODE_MC);
    		OPCODEFORMAT_CASE(MOV_MM	, OPCODE_MM);
    		OPCODEFORMAT_CASE(ADD		, OPCODE_RR);
    		OPCODEFORMAT_CASE(SUB		, OPCODE_RR);
    		OPCODEFORMAT_CASE(ADD_C	, OPCODE_RC);
    		OPCODEFORMAT_CASE(SUB_C		, OPCODE_RC);
    		OPCODEFORMAT_CASE(MUL		, OPCODE_RR);
    		OPCODEFORMAT_CASE(DIV		, OPCODE_RR);
    		OPCODEFORMAT_CASE(MUL_C	, OPCODE_RC);
    		OPCODEFORMAT_CASE(DIV_C		, OPCODE_RC);
    		OPCODEFORMAT_CASE(LEA		, OPCODE_RM);
    		OPCODEFORMAT_CASE(INC		, OPCODE_R);
    		OPCODEFORMAT_CASE(DEC		, OPCODE_R);
    		OPCODEFORMAT_CASE(INT		, OPCODE_C8);
    		OPCODEFORMAT_CASE(CMP_RC	, OPCODE_RC);
    		OPCODEFORMAT_CASE(JMP		, OPCODE_C);
    		OPCODEFORMAT_CASE(JZ		        , OPCODE_C);
    		OPCODEFORMAT_CASE(JNZ		, OPCODE_C);
    		OPCODEFORMAT_CASE(JG		, OPCODE_C);
    		OPCODEFORMAT_CASE(JNG		, OPCODE_C);
    		OPCODEFORMAT_CASE(JGZ		, OPCODE_C);
    		OPCODEFORMAT_CASE(JL		        , OPCODE_C);
    		OPCODEFORMAT_CASE(CALL		, OPCODE_C);
    		OPCODEFORMAT_CASE(PUSH_R	, OPCODE_R);
    		OPCODEFORMAT_CASE(PUSH_C	, OPCODE_C);
    		OPCODEFORMAT_CASE(PUSH_C8	, OPCODE_C8);
    		OPCODEFORMAT_CASE(POP_R	, OPCODE_R);
    		OPCODEFORMAT_CASE(POP		, OPCODE);
    		OPCODEFORMAT_CASE(POP8		, OPCODE);
    		OPCODEFORMAT_CASE(POP_M8	, OPCODE_M);
    		OPCODEFORMAT_CASE(POP_M16	, OPCODE_M);
    		OPCODEFORMAT_CASE(OUT_M8	, OPCODE_MC);
    		OPCODEFORMAT_CASE(OUT_M16	, OPCODE_MC);
    		OPCODEFORMAT_CASE(OUT_C8	, OPCODE_CC8);
    		OPCODEFORMAT_CASE(OUT_C16	, OPCODE_CC);
    		OPCODEFORMAT_CASE(OUT_R	, OPCODE_RC);
    		OPCODEFORMAT_CASE(IN_R		, OPCODE_RC);
    		OPCODEFORMAT_CASE(IN_M8	, OPCODE_MC);
    		OPCODEFORMAT_CASE(IN_M16	, OPCODE_MC);
    		OPCODEFORMAT_CASE(RET		, OPCODE);
    
    	default: return (OpcodeFormat)0xFF; break;
    	}
    }
    #undef OPCODEFORMAT_CASE

    отрефакторил

    digitalEugene, 10 Февраля 2022

    Комментарии (39)
  9. C++ / Говнокод #27995

    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
    std::vector<Token> Tokenizer::coreTokenize(std::string src)
    {
        const boost::escaped_list_separator<char> els("\\"s, " \n\t"s, "\";");
    
        boost::replace_all(src, "\"", R"("\")");
        boost::replace_all(src, ";", ";\\;");
        boost::replace_all(src, "\\n", "\\\\n");
        boost::replace_all(src, "\n", "\\n");
    
        const boost::tokenizer tok(src, els);
        std::vector<Token> tokens;
    
        std::ranges::copy(tok, std::back_inserter(tokens));
        bool (std::string::*starts_with) (char const) const = &std::string::starts_with;
        std::remove_if(tokens.begin(), tokens.end(), boost::bind(starts_with, boost::placeholders::_1, ';'));
    
        return tokens;
    }

    захотел добавить в свой компилятор подсветку ошибок. пришлось накостылить.

    digitalEugene, 05 Февраля 2022

    Комментарии (4)
  10. C++ / Говнокод #27994

    +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
    #include <iostream>
    
    int main(void)
    {
    char sep = '\n'  /1\
    ; int i = 68    /1  \
    ; while (i  ---      1\
                           \
                           /1/1/1                               /1\
                                                                /1\
                                                                /1\
                                                                /1\
                                                                /1\
                                /           1\
                               /            1 \
                              /             1  \
                             /              1   \
                             /1            /1    \
                              /1          /1      \
                               /1        /1        /1/1> 0) std::cout \
                                  <<i<<                               sep;
        return 0;
    }

    https://stackoverflow.com/a/65856842

    digitalEugene, 05 Февраля 2022

    Комментарии (18)
  11. C++ / Говнокод #27993

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    #define as ;while
    
    int main(int argc, char* argv[])
    {
        int n = atoi(argv[1]);
        do printf("n is %d\n", n) as ( n --> 0);
        return 0;
    }

    digitalEugene, 05 Февраля 2022

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