Сборный / Говнокод #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) RSS

  • блин, скоро в машинных кодах будут говнокоды выкладывать
    Ответить
      • да хоть куда, где выложится - туда и выкладывай, мне тоже интересно стало 🙂
        Ответить
        • Тока, прежде чем выкладывать в машинных кодах - переведи в ассемблер. 😉
          Ответить
  • а чо строк так мало? наебошил бы весь проект!
    Ответить
  • Весь проект - много. Это CGI для электронного магазина.
    Ответить
  • Да какая разница на чем. Работает же.
    Плюс меньше конкурентов по услугам поддержки портала
    Ответить
  • Ну нет оптимизации, впрочем тут она и быть не может на уровне инструкций, этож юзермод. Так собственно в чём суть ??
    Скрипты сами по себе хуета, как си, синтокс фасма, линус и его формат файлегов etc. А это похоже на копипаст дизасма высера сишного компиля, тока афтор имена расставил. С ветвлениями всё нормально, размер короткого условного и безусловного ветвлений одинаков. А проверка только на один флажёк нуля(точнее инверсия условия), поэтому с этим нет ошибок. Афтора темы в биореактор!
    Ответить
    • guest:
      А это похоже на копипаст дизасма высера сишного компиля, тока афтор имена расставил

      Интересно, чем же похоже? 🙂
      Я вот, например, так и не научился работать с MySQL в ассемблере ( вломы структуры расписывать ), поэтому пришлось сделать собственный libmysql с блэкджеком и шлюхами обертками для MySQL функций. Писалось ручками в KDevelop. А насчет ошибок:
      push eax
      	;c
      	xor eax, eax
      	pop eax

      Как сие понимать?
      Ответить
      • А может просто флаги изменить надо. SF=CF=OF=0, ZF=1. Вот если там ниже будет jz или что-то подобное, то это обфускация.
        Ответить
  • [quote]Интересно, чем же похоже?[/quote]
    push eax
    	;c
    	xor eax, eax
    	pop eax

    Что тут не понятно, компиль указан 😀
    Ответить
    • Было бы мне лет по-больше, я бы сказал что-то вроде "вот и выросло поколение, которое думает, что ассемблер не умеет базы данных, потому что под него нет подходящего фрэймворка". )
      Ответить
          • нет, не странный. Используя фреймворки:
            > "вот и выросло поколение, которое думает, что ассемблер не умеет базы данных, потому что под него нет подходящего фрэймворка"
            Ответить
            • В корне не верно, я считаю. Ну да начинать холивар неохота.
              Ответить
              • когда я писал динамические юзербары, весь интерфейс у меня работал на основе DHTML, загрузка данных происходила ажаксом. Класс для работы с ajax я тоже написал сам, потому что мне вломы тащить 55 кб jquery для одного только ажакса, мой класс весит пару килобайтт.
                Все манипуляции с DOM я тоже писал сам, т.к. мне было интересно как это устроено.
                Сейчас я пишу проект в котором использую jquery, т.к. писать велосипеды мне не хочется, да и собственно, времени на них нет.
                С ПШП все точно так же. Меня друзья пинают, мол, используй фреймворки для своей системы тикетов - там все до тебя уже придумали. Да, наверно это удобно, но блять когда сам фреймворк веси 8 мегабайт в зазипованном виде, а мне оттуда только функционал взаимодействия с БД нужен - ебал я в рот такое счастье.

                Во всем нужно знать меру.
                Ответить
                • Верно абсолютно, только это расходится со словами "принципиально не использую" немного.
                  Согласен, в первой всегда и сам сортировку напишешь, и численные методы и прочие велосипеды - чтобы разобраться, как оно работает.
                  Фреймворки не всегда бывают монстрами, не всегда обязательно для одностраничного сайта, который показывает какую-нибудь табличку - один селект использовать орм, которая умеет всё на свете. Это одна сторона. С другой стороны, да похуй что 8 мб, если оно действительно очень поможет в разработке. Ведь на сервере, что 30мб, что 2мб, часто не играет особой роли - это всего лишь место на диске, да и производительность сейчас таких веб-систем не так сильно критично, ассемблеров и железа это конечно не касается.
                  Правильно, нужно знать меру, нужно знать чего тебе нужно и стоит ли писать велосипед самому.
                  Ответить
                  • когда место на HDD на хостинге ограничено парой сотен мегабайт - каждый килобайт на счету 😀
                    Ответить
                    • Пара сотен мегабайт - достаточно вполне чаще всего с большой головой =)
                      А с другой стороны, вряд ли серьёзные проекты будут деплоиться там где "на хостинге ограничено парой сотен мегабайт".. Наверное..
                      Ответить
  • [quote]CGI на Асм - высший говнокод![/quote]
    Это само по себе гуан, всё что не связано с железом гуан, почти всё.
    Ответить
  • А ты считаешь, что ассемблер истинно для железа?
    Ты - Лжец!
    Ответить
    • Ассемблер не удобно не для чего использовать, кроме как для контролеров. И то все нормальные контролеры уже давно С, а то и С++ обзавелись. Даже в шейдерах видеокарт ассемблер уже "сто лет" как не используют.

      Лукавлю конечно. Ещё для создания аппаратно зависимой части OS и математических библиотек используют.

      Но к CGI ассемблер не какого отношения не имеет.
      Разве, что
      >меньше конкурентов по услугам поддержки портала
      мне понравилось. Не могу не согласиться. Забавно. 🙂
      Ответить
      • Насчет с++ звиздежь. в дровах он не используется ибо преимуществ перед обычным с не дает.
        Ответить
        • Разве кто-то говорил что-то про драйвера? Хотя в драйверах, вроде, тоже начинают использовать ООП.
          Ответить
        • еще как используют. Видимо про KMDF ты не слышал. Преимущество - читабельность кода, простота поддержки и поиска багов
          Ответить
  • А я когда вижу 100 строк ассемблера как-то неохота разбирать в чём говнокод =(
    Ответить
  • push eax
    ;c
    xor eax, eax
    pop eax
    Это очистка флага carry?
    Ответить
  • В этом коде не хватает инкапсуляции и полиморфизма. (с)
    Ответить
  • Почему все считают что процессорный код собирать это зло и не актуально ?
    Ответ прост - кто так считает не знает истены. Они знают только среду с которой работают, как работает ось им не известно. А раз так, то их код(ваш ?) не может быть высокостабильным, а значит в нём будут уязвимости, баги и глюки, сделан он жерез задницу. Тру код собирается только на асме.
    Ответить
          • Вообще, как раз демотиваторы.
            Сайт показывает как не надо писать.
            Читаешь код и интенсивно демотивируешь перед монитором обеими руками:)
            Ответить
            • Вообще я считаю его больше юмористическим. Ведь каждый программист бывает что-то напишет такое - самому становится от этого забавно, выкладывает сюда (а не только в чём не разобрался в чужом) и мы вместе смеёмся..
              Не демотиваторы - я имел в виду, конечно же, к тому что стиль комментариев тут не должен быть как на демотиваторы ру
              Ответить
    • ничего, может когда-нибудь ты поймешь что коммерческий проект должен разрабатываться по пути наименьшего сопротивления, прочитаешь про "высокостабильный" код, узнаешь откуда беруться глюки баги и уязвимости и научишься программировать. Тогда ты поймешь что такие рассуждения о тру коде круты только на первом курсе университета
      Ответить
  • Соберем для Вас по интернет клиентские базы данных для Вашего Бизнеса Узнайте подробнее по Email: prodawez392@gmail.com Тел +79139230330(wiber/whatsapp/telegram) Skype: prodawez390
    Ответить
  • Лифт, как всегда, не работал. Подниматься на девятый этаж пришлось пешком. И если до пятого я молчал, то за остальные четыре этажа проклял всех лифтёров и весь состав ЖЭКа.
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8