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

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
;uint64_t foo(uint32_t x, uint64_t y) { return x*y; }

sub esp, 0×8
mov edx, [esp+0x14]
mov ecx, [esp+0xc]
mov eax, [esp+0x10]
mov [esp+0x4], esi
mov esi, edx
imul esi, ecx
mul ecx
mov [esp], ebx
mov ebx, [esp]
add esi, edx
mov edx, esi
mov esi, [esp+0x4]
add esp, 0×8
ret

оптимизированое умножение - gcc 4.2.4

3.14159265 3.14159265, (Updated )

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

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

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
mov ebx, [sKey]
                              mov ecx, 31

                              l9:
                              ;----------loop------------
                              	fprem
	                        shr ebx,1
                              	jnc if9
			.......
                              	if9:
                              	fmul st0,st0
                              ;----------loop------------              
                              loop l9

реабилитируюсь за пост несвежего, но смешного говна немного раньше

3.14159265 3.14159265, (Updated )

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

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

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
7855BD60 55               push        ebp  
7855BD61 8B EC            mov         ebp,esp 
7855BD63 56               push        esi  
7855BD64 33 C0            xor         eax,eax 
7855BD66 50               push        eax  
7855BD67 50               push        eax  
7855BD68 50               push        eax  
7855BD69 50               push        eax  
7855BD6A 50               push        eax  
7855BD6B 50               push        eax  
7855BD6C 50               push        eax  
7855BD6D 50               push        eax  
7855BD6E 8B 55 0C         mov         edx,dword ptr [ebp+0Ch] 
7855BD71 8D 49 00         lea         ecx,[ecx] 
7855BD74 8A 02            mov         al,byte ptr [edx] 
7855BD76 0A C0            or          al,al 
7855BD78 74 09            je          7855BD83 
7855BD7A 83 C2 01         add         edx,1 
7855BD7D 0F AB 04 24      bts         dword ptr [esp],eax 
7855BD81 EB F1            jmp         7855BD74 
7855BD83 8B 75 08         mov         esi,dword ptr [ebp+8] 
7855BD86 8B FF            mov         edi,edi 
7855BD88 8A 06            mov         al,byte ptr [esi] 
7855BD8A 0A C0            or          al,al 
7855BD8C 74 0C            je          7855BD9A 
7855BD8E 83 C6 01         add         esi,1 
7855BD91 0F A3 04 24      bt          dword ptr [esp],eax 
7855BD95 73 F1            jae         7855BD88 
7855BD97 8D 46 FF         lea         eax,[esi-1] 
7855BD9A 83 C4 20         add         esp,20h 
7855BD9D 5E               pop         esi  
7855BD9E C9               leave            
7855BD9F C3               ret

чудеса оптимизации

GovnocoderJr GovnocoderJr, (Updated )

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

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

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
proc mltcoef
          push ecx
          xor ecx,ecx
          xor edx,edx
          xor ebx,ebx
          mov eax,dword[coef+edx]
          _b:
          add [coef+edx],eax
          jc _c
          _e:
          cmp ecx,9
          jne _b
          inc ecx

          _c
          push edx
          _d
          add edx,4
          add [coef+edx],1
          jc _d
          pop edx
          jmp _e
          pop ecx
          ret
          endp

Пока я писалвысирал эту НЁБ, я уже забыл, зачем оно было нужно.

Leo_ня Leo_ня, (Updated )

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

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

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 ELF


include 'macros.inc'


public main


extrn printf
extrn puts
extrn exit
extrn strtok
extrn getenv
extrn strcmp
extrn strtol
extrn strcpy
; Функции для общения с БД
extrn get_version ; ремейк на mysql_get_client_info()
extrn get_product_by_single_name_ex

CGI_HEADER db "Content-Type: text/html", 13,10, "X-Powered-by: FASM (Flat Assembler 1.68)",13,10,0
QUERY_STRING db ?
REQUEST_METHOD db ?

	query_str_env_req	db	"QUERY_STRING", 0
	request_method_env_req	db	"REQUEST_METHOD", 0	
	RM_GET db "GET", 0
	RM_POST db "POST",0

NO_ACTION_ERROR_MSG db "No action", 0



q_token db "="
r_token db "&"


; Константы ACTION
	AC_VERSION equ 0; Инфа о версии и копирайте

	AC_PRODUCT_ID_BY_SINGLE_NAME equ 1; ID продукта по полному совпадению имени
	

section '.text' executable
_start:

	main:
	ccall puts, CGI_HEADER
	ccall getenv, request_method_env_req
	push eax
	;c
	xor eax, eax
	pop eax
	ccall strcmp, eax, RM_GET ; TODO: ЗМЕНИТЬ НА POST!!!1111
	cmp eax, 0
	jne quit
	
	;Что прислали в Action. ( ТОЛЬКО GET )
	
	ccall getenv, query_str_env_req
	ccall strcpy, QUERY_STRING, eax
	ccall strtok, QUERY_STRING, q_token
	push eax
	ccall strcmp, eax, "act"
	cmp eax, 0
	jne no_act
	je act
no_act:
	ccall puts, NO_ACTION_ERROR_MSG
	jmp quit
act:
	
	
	; Узнаём, что за опция в act
	pop eax;
	ccall strtok, 0, q_token
	ccall strtol, eax, 0, 10
	cmp eax, AC_VERSION
	je version_put
	cmp eax, AC_PRODUCT_ID_BY_SINGLE_NAME
	je product_id_by_single_name
	jne quit

version_put:
	; версия - из mysql
	ccall puts, "Web kernel v0.1. (c) 2009 by Sergei V. Adoniew ( <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5e3f323a343f3c3f3a1e273f702c2b">[email protected]</a> ) with MySQL: "
	ccall get_version
	ccall puts, eax
	jmp quit

product_id_by_single_name:

	
	;НА Входе: name=%docname%
	;НА Выходе id
	
	; дробим строку на a=b разделителем &
 	ccall getenv, "QUERY_STRING"
	;у нас в eax вся строка

Собственный пьяный высер на фасме ( FASM ).

Обратить внимание на ветвление:)

AlDjabad AlDjabad, (Updated )

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

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

0

  1. 1
  2. 2
fld qword ptr [d]
call @ROUND

Это творчество дельфийского компилятора на тему i := round(d);
Он делает вызов функции ради одной пустяковой команды, что очень влияет на скорость.

TarasB TarasB, (Updated )

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