Сборный / Говнокод #27216 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  99. 99
  100. 100
format pe console
   include 'win32ax.inc'
macro call1 f,p1{
   mov    ebx,p1
   call   f}
macro call2 f,p1,p2{
   mov    ecx,p2
   call1  f,p1}
macro call3 f,p1,p2,p3{
   mov    edx,p3
   call2  f,p1,p2}
.data
   lead_time dd ?
   handle_input dd ?
   handle_output dd ?
   byte_read_write dd ?
.code
   string db 'govnokod.ru ',13,10,0
   array_procs dd __strlen,_strlen,strlen,0
putdword:;ebx-handle,ecx-byte
   mov    eax,esp
   mov    esi,eax
   sub    esp,16
   xchg   eax,ecx
   mov    edi,10
@@:xor    edx,edx
   div    edi
   add    dl,'0'
   dec    ecx
   mov    [ecx],dl
   test   eax,eax
   jnz    @b
   sub    esi,ecx
   mov    edx,esi
   invoke WriteFile,ebx,ecx,edx,byte_read_write,0
   add    esp,16
   ret
align 4
strlen:;ebx-array of char
   mov    eax,12
   ret
align 4
_strlen:;ebx-array of char
   clc
   xor    ecx,ecx
   dec    ecx
   mov    edi,ebx
   xor    al,al
   repne  scasb
   not    ecx
   dec    ecx
   mov    eax,ecx
   ret
align 4
__strlen:;ebx-array of char
   xor    eax,eax
   dec    eax
@@:inc    eax
   cmp    byte[ebx+eax],0
   jne    @b
   ret
start:
   invoke GetStdHandle,STD_INPUT_HANDLE
   mov    [handle_input],eax
   invoke GetStdHandle,STD_OUTPUT_HANDLE
   mov    [handle_output],eax
   mov    ebp,array_procs
next_step:
   call   [GetTickCount]
   mov    [lead_time],eax
   xor    ecx,
@@:push   ecx
   mov    ebx,string
   call   dword[ebp]
   pop    ecx
   loop   @b
   push   eax
   call   [GetTickCount]
   sub    eax,[lead_time]
   mov    ecx,1000
   xor    edx,edx
   div    ecx
   push   edx
   call2  putdword,[handle_output],eax
   invoke WriteFile,ebx,string+8,1,byte_read_write,0
   pop    ecx
   call2  putdword,[handle_output],ecx
   invoke WriteFile,ebx,string+11,1,byte_read_write,0
   pop    ecx
   call2  putdword,[handle_output],ecx
   invoke WriteFile,[handle_output],string+12,2,byte_read_write,0
   add    ebp,4
   cmp    dword[ebp],0
   jne    next_step
   call   [GetTickCount]
   mov    [lead_time],eax
   invoke SetConsoleMode,[handle_input],0
   invoke ReadFile,[handle_input],byte_read_write,1,byte_read_write,0
   invoke ExitProcess,0
.end start

Поговнокодим однако.
Зачем в процессоре занимают место команды типа repne scasb и прочее, если простые аналоги быстрее компактнее и проще встраивать в алгоритм без отдельной подпрограммы да и регистров в разы меньше требуется. Пустая подпрограмма для понимания сколько времени занимает лишний код. Есть предположение что раньше на заре развития они работали шустрее, но это только предположение.

chiacorp chiacorp, (Updated )

Комментарии (11, +11)

Няшная / Говнокод #27215 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
includelib  C:\Irvine\User32.Lib
includelib  C:\Irvine\Kernel32.Lib
includelib  D:\masm32\lib\Irvine32.lib
include     \masm32\include\Irvine32.inc

.data

data_1 dword  45

data_2 dword 29

msg byte ?

.code
main PROC
xor ebx,  ebx
xor eax,  eax
xor edx,  edx
xor esi,  esi

mov cl ,31
mov eax, data_1
mov esi , data_2


lm:

shl esi,   1
jnc one
cmp msg, 1

je two
shl eax,   cl

mov   msg, 1
mov ebx, data_1
jmp one

two:

shl ebx, cl
mov   msg, 0
add eax, ebx
add edx , eax
mov eax, data_1


one:

loop lm

mov eax , edx

call WriteInt
Call CrLf
	
	exit
main ENDP
END main

Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
Though I know that evening's empire has returned into sand
Vanished from my hand
Left me blindly here to stand, but still not sleeping
My weariness amazes me, I'm branded on my feet
I have no one to meet
And the ancient empty street's too dead for dreaming
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
Take me on a trip upon your magic swirling ship
My senses have been stripped
My hands can't feel to grip
My toes too numb to step
Wait only for my boot heels to be wandering
I'm ready to go anywhere, I'm ready for to fade
Into my own parade
Cast your dancing spell my way, I promise to go under it
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you

Madhouse_camomile Madhouse_camomile, (Updated )

Комментарии (2, +2)

Школоло / Говнокод #27214 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
procedure ProgramRestart(Sender: TObject);
begin
   Application.Terminate;
   ShellExecute(0,'open',Application.ExeName,'','',SW_NORMAL); // ))
end;

Неделю когда-то пытался понять почему этот код не работает: "Я же программу вырубил? - вырубил... Я же ее запускаю? - запускаю... А че она не запускается?)))..."

vovka3003 vovka3003, (Updated )

Комментарии (29, +29)

Куча говна / Говнокод #27212 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
# ------------------- fUnicodeToUTF8----------------------
:global fUnicodeToUTF8
:if (!any $fUnicodeToUTF8) do={ :global fUnicodeToUTF8 do={
  :global fByteToEscapeChar
#  :local Ubytes [:tonum $1]
  :local Nbyte
  :local EscapeStr ""

  :if ($1 < 0x80) do={
    :set EscapeStr [$fByteToEscapeChar $1]
  } else={
    :if ($1 < 0x800) do={
      :set Nbyte 2
    } else={  
      :if ($1 < 0x10000) do={
        :set Nbyte 3
      } else={
        :if ($1 < 0x20000) do={
          :set Nbyte 4
        } else={
          :if ($1 < 0x4000000) do={
            :set Nbyte 5
          } else={
            :if ($1 < 0x80000000) do={
              :set Nbyte 6
            }
          }
        }
      }
    }
    :for i from=2 to=$Nbyte do={
      :set EscapeStr ([$fByteToEscapeChar ($1 & 0x3F | 0x80)] . $EscapeStr)
      :set $1 ($1 >> 6)
    }
    :set EscapeStr ([$fByteToEscapeChar (((0xFF00 >> $Nbyte) & 0xFF) | $1)] . $EscapeStr)
  }
  :return $EscapeStr
}}

угадай язык

MAKAKA MAKAKA, (Updated )

Комментарии (23, +23)

ЙажаСценарий / Говнокод #27211 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
if (condition)
{
    return result;
}

for (let i = 0; i < 5; i++) 
{
    console.log(i)
}

Зачастую у многих программистов, который пишут на джаваскрипте, наблюдаю следующую картину - вероятно, унаследованную из какого-нибудь си шарпа.
Можно ли назвать это говнокодом, в рамках JS?

Alexandre Alexandre, (Updated )

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

Кресты / Говнокод #27209 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
// https://www.linux.org.ru/forum/development/16099510/
// c++ шаблон zip-like итератора? 
// В python есть крайне полезные функции zip, enumerate, range. Мне нужно что-то подобное для cpp/cuda (c++17).
// Если c range и enumerate более менее понятно, то как реализовать zip не соображу. Семантически это должно быть variadic template

template<typename t, typename... ts>
class zip : zip<ts...>{
	zip(t arg, ts... args);
	struct iterator;
	begin() -> iterator;
	end()   -> iterator;
};

// Где итератор возвращает кортеж ссылок на элементы что с контейнерами можно было работать как:

for(auto [x,y,z] : zip(xs,ys,zs))

// Рекурсивное наследование должно быть ограничено тривиальным случаем одного аргумента.
//Но, кажется, я думаю не в правильную сторону, в частности, не соображу как рекурсивно вывести тип возвращаемых итератором кортежей:

using ret_type = tuple<decltype(begin(declval<t>())), decltype(???)>

Блять, как всё сложно. Какие-то рекурсивные выводы типов возвращаемых итераторов кортежей блядь.

Вот если б вместо ущербного триждыблядского типодрочерского шаблоноговна сделали что-то помощнее...

j123123 j123123, (Updated )

Комментарии (11, +11)