1. Си / Говнокод #25706

    +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
    #define SWITCHCALL                                                         \
      dtrick                                                                   \
      switch(cnt){                                                             \
      case 0:  r = fp(); break;                                                \
      case 1:  r = fp(d[0]); break;                                            \
      case 2:  r = fp(d[0], d[1]); break;                                      \
      case 3:  r = fp(d[0], d[1], d[2]); break;                                \
      case 4:  r = fp(d[0], d[1], d[2], d[3]); break;                          \
      case 5:  r = fp(d[0], d[1], d[2], d[3], d[4]); break;                    \
      case 6:  r = fp(d[0], d[1], d[2], d[3], d[4], d[5]); break;              \
      case 7:  r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6]); break;        \
      case 8:  r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7]); break;  \
      case 9:  r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8]); break;                                            \
      case 10: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9]); break;                                      \
      case 11: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10]); break;                               \
      case 12: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11]); break;                         \
      case 13: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12]); break;                   \
      case 14: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13]); break;             \
      case 15: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14]); break;       \
      case 16: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15]); break; \
      case 17: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16]); break;                                           \
      case 18: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17]); break;                                     \
      case 19: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18]); break;                               \
      case 20: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19]); break;                         \
      case 21: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20]); break;                   \
      case 22: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21]); break;             \
      case 23: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22]); break;       \
      case 24: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23]); break; \
      case 25: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
                      d[24]);break;                                            \
      case 26: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
                      d[24],d[25]);break;                                      \
      case 27: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
                      d[24],d[25],d[26]);break;                                \
      case 28: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
                      d[24],d[25],d[26],d[27]);break;                          \
      case 29: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
                      d[24],d[25],d[26],d[27],d[28]);break;                    \
      case 30: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
                      d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
                      d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
                      d[24],d[25],d[26],d[27],d[28],d[29]);break;              \
    
    
      /******* ну вы понели *******/

    Какой кавай )))
    https://github.com/jsoftware/jsource/blob/master/jsrc/x15.c

    Запостил: KaBauHblu_nemyx, 08 Июля 2019

    Комментарии (31) RSS

    • static I     NOOPTIMIZE stdcalli(STDCALLI fp,I*d,I cnt,DoF*dd,I dcnt){I r;
       SWITCHCALL;
       R r;
      }  /* I result */
      static I     NOOPTIMIZE altcalli(ALTCALLI fp,I*d,I cnt,DoF*dd,I dcnt){I r;
       SWITCHCALL;
       R r;
      }
      static D     NOOPTIMIZE stdcalld(STDCALLD fp,I*d,I cnt,DoF*dd,I dcnt){D r;
       SWITCHCALL;
       R r;
      }  /* D result */
      static D     NOOPTIMIZE altcalld(ALTCALLD fp,I*d,I cnt,DoF*dd,I dcnt){D r;
       SWITCHCALL;
       R r;
      }
      Ответить
      • Выглядит, как хуй исходники «J». Погодите...
        Ответить
        • Выглядит как попытка писать на си низкоуровневое говно переносимо. С асмовставками можно было бы большую часть этого заменить на суслика с пушкой.

          Это часть реализации глагола cd (или 15!:0 —– вызов функции из длл), после загрузки длл, парсинга сигнатуры и подготовки данных всё попадает сюда. Судя по всему вызвать функцию с >64 аргументов без патчинга интерпретатора не получится.
          Ответить
      • Оптимизация: ALTCALLI и ALTCALLD (это cdecl) можно всегда вызывать с 64 аргументами.
        Ответить
    • Интересно, как это реализовано в других языках? Например в том же петоне. Я пробовал найти, но не смог, ничего не понял.

      То ли дело 'J', смотрим на список файлов: a.c a.h ab.c af.c ... x.c x.h x15.c xa.c xb.c ...
      и сразу понятно, что файли x* —– это реализация !: (xenos или foreign), а x15.c это реализация 15!: —– работа с длл и памятью. Всё чётко и ясно! Именно поэтому я за 'J'.
      Ответить
    • shitый
      Ответить
    • The dll call stack frame is built entirely with I values.
      All the int types (char, unicode, short etc) are stacked as I valued.
      Pointers are stacked as I values.
      Short floats are stacked as I values.
      Doubles are stacked as I values (2 for J32 and 1 for J64).

      The Sky is stacked as I value.
      Allah is stacked as I value.
      Ответить
    • k='_'==*proc?-strtoI(1+proc,0L,10):strtoI(proc,0L,10);
      CDASSERT(k&&'0'==*lib||0<=k&&'1'==*lib,DEBADFN);
      
      
      static I cdjtype(C c){R c=='c'?LIT:c=='w'?C2T:c=='u'?C4T:(c=='j'||c=='z')?CMPX:(c=='f'||c=='d')?FL:c?INT:0;}


      Как такой кодстайл называется?
      Ответить
      • 'J'
        Ответить
      • J.
        Ответить
      • хендшейк какого-то протокола
        Ответить
      • IOCCC.
        Ответить
        • a[900];		b;c;d=1		;e=1;f;		g;h;O;		main(k,
          l)char*		*l;{g=		atoi(*		++l);		for(k=
          0;k*k<		g;b=k		++>>1)		;for(h=		0;h*h<=
          g;++h);		--h;c=(		(h+=g>h		*(h+1))		-1)>>1;
          while(d		<=g){		++O;for		(f=0;f<		O&&d<=g
          ;++f)a[		b<<5|c]		=d++,b+=	e;for(		f=0;f<O
          &&d<=g;		++f)a[b		<<5|c]=		d++,c+=		e;e= -e
          ;}for(c		=0;c<h;		++c){		for(b=0		;b<k;++
          b){if(b		<k/2)a[		b<<5|c]		^=a[(k		-(b+1))
          <<5|c]^=	a[b<<5		|c]^=a[		(k-(b+1		))<<5|c]
          ;printf(	a[b<<5|c	]?"%-4d"	:"    "		,a[b<<5
          |c]);}		putchar(	'\n');}}	/*Mike		Laman*/
          Ответить
    • Какие сейчас годные варез трекеры есть уровня демоноида и выше?
      Ответить
      • Я использую встроенный поиск Vuze (Azureus) + DHT + PEX + в каждый торрент добавляю вручную ретрекеры, которые можно получить отсюда:
        http://internetwarriors.net/

        P.S. Почему вопрос задан в этом говнокоде?
        Ответить
        • > встроенный поиск
          Но это поди такое же говнище с кучей наебалова, как и во всяких ослах?
          Ответить
          • Ну я ж не мобильником торренты качаю. Мне не жало скачать что-то лишнее, чтобы потом проверить.

            Кстати, в Kad/ed2k говна стало меньше. Вероятно, копирасты признали эти протоколы бесперспективными и прекратили срать.

            А вот некоторые антикварные сети вроде Gnutella 1 засраны выше крыши (Gnutella 2 почему-то чище). Вероятно, в доисторические времена засрали настолько, что до сих пор не выветривается.
            Ответить
            • P.S. А самые чистые сети — GNUnet, Freenet и прочие новые... потому что в них почти никого нет.
              Ответить
            • > проверить
              Пираты должны страдать, да?

              Имхо, в торрентах самое ценное - это именно сайт с нормальными описаниями, комьюнити и какой-никакой модерацией. А встроенный поиск - это возврат в каменный век.
              Ответить
              • Центральный сайт с описаниями годится для легального кококококонтента.
                Ответить
                • Да и в торрент файлах, кмк, самая "нелегальная" часть - это ссылка на трекер (т.к. он явным образом помогает распространению).

                  Если же эту ссылку оттуда выпилить, то останется безобидный набор хешей для верификации файлов.
                  Ответить
                  • Остается только найти тех, кто их раздает
                    Давайте изобретем мультикаст для Интрнета (такой уже был, но он все)
                    Ответить
                    • Кстати, а за участие в DHT у вас тоже письма счастья приходят? Или только за реальную передачу контента?
                      Ответить
    • Царские пор-тянки?
      Ответить

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