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

    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
    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
    function main()
    {
    	assert(false, "defl0");
    }
    
    // получаетм MLIR tsc.exe --emit=mlir C:\temp\2.ts
    
    module  {
      func @main() {
        %false = constant false
        typescript.assert %false, "defl0"
        return
      }
    }
    
    // или MLIR-LLVM
    
    module  {
      llvm.mlir.global internal constant @f_7029868395233414505("C:\\temp\\2.ts\00")
      llvm.mlir.global internal constant @m_964876063036005986("defl0\00")
      llvm.func @_assert(!llvm.ptr<i8>, !llvm.ptr<i8>, i32)
      llvm.func @main() {
        %0 = llvm.mlir.constant(false) : i1
        llvm.cond_br %0, ^bb1, ^bb2
      ^bb1:  // pred: ^bb0
        llvm.return
      ^bb2:  // pred: ^bb0
        %1 = llvm.mlir.addressof @m_964876063036005986 : !llvm.ptr<array<6 x i8>>
        %2 = llvm.mlir.constant(0 : index) : i64
        %3 = llvm.getelementptr %1[%2, %2] : (!llvm.ptr<array<6 x i8>>, i64, i64) -> !llvm.ptr<i8>
        %4 = llvm.mlir.addressof @f_7029868395233414505 : !llvm.ptr<array<13 x i8>>
        %5 = llvm.mlir.constant(0 : index) : i64
        %6 = llvm.getelementptr %4[%5, %5] : (!llvm.ptr<array<13 x i8>>, i64, i64) -> !llvm.ptr<i8>
        %7 = llvm.mlir.constant(5 : i32) : i32
        llvm.call @_assert(%3, %6, %7) : (!llvm.ptr<i8>, !llvm.ptr<i8>, i32) -> ()
        llvm.unreachable
      }
    }
    
    // переводим в LLVM mlir-translate.exe --mlir-to-llvmir -o=out.il 1.mlir и получаем полный абзец
    
    ; ModuleID = 'LLVMDialectModule'
    source_filename = "LLVMDialectModule"
    
    @m_15759024501200700639 = internal constant [6 x i8] c"defl2\00"
    @f_7029868395233414505 = internal constant [13 x i8] c"C:\\temp\\2.ts\00"
    @m_9918845950589312633 = internal constant [6 x i8] c"defl0\00"
    
    declare i8* @malloc(i64)
    
    declare void @free(i8*)
    
    declare void @_assert(i8*, i8*, i32)
    
    define void @main() !dbg !3 {
      br i1 false, label %1, label %3, !dbg !7
    
    1:                                                ; preds = %0
      br i1 false, label %2, label %4, !dbg !9
    
    2:                                                ; preds = %1
      ret void, !dbg !10
    
    3:                                                ; preds = %0
      call void @_assert(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @m_9918845950589312633, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @f_7029868395233414505, i64 0, i64 0), i32 5), !dbg !11
      unreachable, !dbg !12
    
    4:                                                ; preds = %1
      call void @_assert(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @m_15759024501200700639, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @f_7029868395233414505, i64 0, i64 0), i32 12), !dbg !13
      unreachable, !dbg !14
    }
    
    // компилим это говно и получаем EXE
    // llc.exe --filetype=obj -o=out.o out.il
    // lld.exe -flavor link out.o "libcmt.lib" "libvcruntime.lib" "kernel32.lib" "libucrt.lib" "uuid.lib" 
    // запускаем и вуаля
    
    // Output:
    // Assertion failed: defl0, file C:\temp\2.ts, line 5

    продолжаем говнокодить. что получается из одной строчки после компиляции когда в TypeScript (компайлером)

    ну все сказанно в говнокоде

    Запостил: ASD_77, 02 Февраля 2021

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

    • Всё время хотел тебе сказать, что я завидую тому, как именно ты ебанулся
      Ответить
      • Все мы ебанутые по разному и друг другу завидуем.
        Ответить
        • Согласен. Я вот сегодня пытался заменить сраную ебаную GT 240 (к которой уже дрова говно или вообще выпилены (держу ради двух мониторов) и на которой у меня даже awesome даёт артефакты порой (не говорю про то что vkc по неизвестной причине при переходе в фулскрин вешает систему намертво и грешу я тут только на нвидиа, больше и не на что)) , на пропавшую ко мне в лапы gt550ti cyclone 2, и столкнулся с проблемой: у меня есть два блока питания, один имеет нужный шестипиновый питуз для доп питания видюхи, но в нем всего один сата, а другой с двумя сата но у него нет шестипинового сата. У меня разумеется хдд и ссд, оба на сата. В итоге я перед выбором: либо видео, либо диск. И чо делать?
          Ответить
          • s/vkc/vlc
            Ответить
          • Купить еще один блок питания, хоть подержанный на авито, но поверь, ставить разветвители и переходники ты не хочешь. Говорю как человек, искавший по городу разъем sata на замену сплавившемуся в единый кусок горелой пластмассы.
            Ответить
            • Данные, кстати, успешно получилось слить.
              Ответить
            • Появился вариантик въебать переходник обхединяющий два Molex в один PIC-E 6pin, который просто по какой-то ангельской милости у меня оказался в наличии. Пиздец, буду пробовать вечером.
              Ответить
              • готовь бабосики и огнетушитель короче
                Ответить
                • Взлетело но не взлетело. Я ебался часов двенадцать, в итоге пришлось использовать более старое ведро, потому что только на нем у меня собрался Легаси драйвер для этой карты, но не работает один монитор из двух, причём именно вставленный во второй dvi. А грешить мне непонятно на что: то ли недостаток питания, то ли непосредственно сломанная карточка (она хуй знает откуда, никто не знает жива ли она).
                  Ответить
                  • Завтра попробую поставить другой блок, но для этого придётся переписать gpt (как помните, там не хватает сата).
                    Ответить
            • Ты перепаивал что-ли? Или что, пожёг мощностью?
              Ответить
              • Закоротился как-то. Мне в целом похуй, просто я на тот момент видел сообщение, что все переходники - говно и горят, и теперь зарубил на носу что дешевле нормальный БП купить.
                Ответить
            • На мусорке не пробовал искать?
              Ответить
          • Поставить оба блока питания и запитать каждый от своего
            Ответить
            • > каждый от своего

              и еще соединить их последовательно! блокопитаниевая многоножка
              Ответить
            • Вообще-то почему бы и нет, просто у меня и так комп уже громоздкий, а то будет какой-то пиздец.
              Ответить
              • сегодня я познакомился с этим красавцем и теперь постоянно думаю о нём

                https://nfc-systems.com/s4-mini/
                Ответить
            • Как выяснилось, чтобы блок питания начал что-то питать, он должен получить сигнал от мамы, поэтому может быть только один, что логично)
              Ответить
              • что мешает замкнуть PS_ON# прямо на землю?
                мама вроде это и делает
                Ответить
                • отсутствие огнетушителя
                  Ответить
                  • Да ладно, всегда так делал. Однажды даже юзали комповский БП как временный для какой-то сетевой железки, когда у неё родной блок сгорел.

                    Главное не промахнуться ;)
                    Ответить
                    • Чем чреват промах?
                      Ответить
                      • Да особо ничем, я думаю защита отработает если выход на землю закоротишь. Но искрануть должно неплохо ;)
                        Ответить
      • просто согласись что тебе еще далеко до меня :)
        Ответить
    • — Шах и мат, блядь!
      — А можно без мата?!
      — Шах и блядь!
      Ответить
    • забыл напомнить что это продолжение истории о том как я писал компайлер для TypeScript
      Ответить
    • Интересный подкаст

      https://soundcloud.com/ithueti/sets/ithueti
      Ответить
    • кто нить по теме может че сказать :)?
      Ответить
    • а где есть форум что бы было еще больше говнокода с еще более отбитыми мозгами :)?
      Ответить
    • Хотел было спростить, где здесь Си, и вот, спрашиваю.
      Ответить

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