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

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
function main()
{
	const ac = [1, 2, 3];
	let a = ac;
	print(ac[0]);
	print(ac[1]);
	print(ac[2]);
	print(a[0]);
	print(a[1]);
	print(a[2]);

	const ac2 = [1.0, 2.0, 3.0];
	let a2 = ac2;
	print(ac2[0]);
	print(ac2[1]);
	print(ac2[2]);

	print(a2[0]);
	print(a2[1]);
	print(a2[2]);

	const ac3 = ["item 1", "item 2", "item 3"];
	let a3 = ac3;
	print(ac3[0]);
	print(ac3[1]);
	print(ac3[2]);

	print(a3[0]);
	print(a3[1]);
	print(a3[2]);
}

// LLVM output

; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"

@frmt_11120820245497078329 = internal constant [4 x i8] c"%s\0A\00"
@s_13298922352840505641 = internal constant [8 x i8] c"item 3\00\00"
@s_13297965777724151296 = internal constant [8 x i8] c"item 2\00\00"
@s_13300835503073214331 = internal constant [8 x i8] c"item 1\00\00"
@a_14124738666956595718 = internal constant [3 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13300835503073214331, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13297965777724151296, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13298922352840505641, i64 0, i64 0)]
@frmt_11108397963124010376 = internal constant [4 x i8] c"%f\0A\00"
@a_17125214420326958200 = internal constant [3 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00]
@frmt_11106471618751763154 = internal constant [4 x i8] c"%d\0A\00"
@a_2366260266165782651 = internal constant [3 x i32] [i32 1, i32 2, i32 3]

declare i8* @malloc(i64)

declare void @free(i8*)

declare i32 @printf(i8*, ...)

define void @main() !dbg !3 {
  %1 = alloca i32*, align 8, !dbg !7
  store i32* getelementptr inbounds ([3 x i32], [3 x i32]* @a_2366260266165782651, i64 0, i64 0), i32** %1, align 8, !dbg !7
  %2 = load i32*, i32** %1, align 8, !dbg !7
  %3 = alloca i32*, align 8, !dbg !9
  store i32* %2, i32** %3, align 8, !dbg !9
  %4 = load i32*, i32** %1, align 8, !dbg !7
  %5 = getelementptr i32, i32* %4, i32 0, !dbg !10
  %6 = load i32, i32* %5, align 4, !dbg !10
  %7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %6), !dbg !11
  %8 = load i32*, i32** %1, align 8, !dbg !7
  %9 = getelementptr i32, i32* %8, i32 1, !dbg !12
  %10 = load i32, i32* %9, align 4, !dbg !12
  %11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %10), !dbg !13
  %12 = load i32*, i32** %1, align 8, !dbg !7
  %13 = getelementptr i32, i32* %12, i32 2, !dbg !14
  %14 = load i32, i32* %13, align 4, !dbg !14
  %15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %14), !dbg !15
  %16 = load i32*, i32** %3, align 8, !dbg !9
  %17 = getelementptr i32, i32* %16, i32 0, !dbg !16
  %18 = load i32, i32* %17, align 4, !dbg !16
  %19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %18), !dbg !17
  %20 = load i32*, i32** %3, align 8, !dbg !9
  %21 = getelementptr i32, i32* %20, i32 1, !dbg !18
  %22 = load i32, i32* %21, align 4, !dbg !18
  %23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %22), !dbg !19
  %24 = load i32*, i32** %3, align 8, !dbg !9
  %25 = getelementptr i32, i32* %24, i32 2, !dbg !20
  %26 = load i32, i32* %25, align 4, !dbg !20
  %27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %26), !dbg !21
  %28 = alloca float*, align 8, !dbg !22
  store float* getelementptr inbounds ([3 x float], [3 x float]* @a_17125214420326958200, i64 0, i64 0), float** %28, align 8, !dbg !22
  %29 = load float*, float** %28, align 8, !dbg !22
  %30 = alloca float*, align 8, !dbg !23
  store float* %29, float** %30, align 8, !dbg !23
  %31 = load float*, float** %28, align 8, !dbg !22
  %32 = getelementptr float, float* %31, i32 0, !dbg !24
  %33 = load float, float* %32, align 4, !dbg !24
  %34 = fpext float %33 to double, !dbg !25
  %35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11108397963124010376, i64 0, i64 0), double %34), !dbg !25
  %36 = load float*, float** %28, align 8, !dbg !22
  %37 = getelementptr float, float* %36, i32 1, !dbg !26
  %38 = load float, float* %37, align 4, !dbg !26
  %39 = fpext float %38 to double, !dbg !27
  %40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11108397963124010376, i64 0, i64 0), double %39), !dbg !27

продолжаем нашу е..блю с компилятором а ля "C" но только используя синтакс TypeScript

дальше это гвно при запуска tsc.exe --emit=llvm c:\1.ts

получаем равернутую раскладку го-в-на которе можно перевести в Obj файл

а если запустим EXE получим такую Х типа "1 2 3 1 2 3 1.0 2.0 3.0 1.0 2.0 3.0 item 1 item 2 item 3 item 1 item 2 item 3"

и никакой е..бли в указателями все сука компилятор делает сам

Запостил: ASD_77 ASD_77, (Updated )

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

  • кому интересно как скомпилить данный ЕХЕ на windows даю BAT файл

    set LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\SDK\ScopeCppSDK\vc15\VC\lib
    set SDKPATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\SDK\ScopeCppSDK\vc15\SDK\lib
    set EXEPATH=C:\dev\TypeScriptCompiler\3rdParty\llvm\debug\bin
    C:\dev\TypeScriptCompiler\__build\tsc\bin\tsc.exe --emit=llvm C:\temp\MLIR_to_exe\1.mlir 2>1_.ll
    %EXEPATH%\llc.exe --filetype=obj -o=out.o 1_.ll
    %EXEPATH%\lld.exe -flavor link out.o "%LIBPATH%\libcmt.lib" "%LIBPATH%\libvcruntime.lib" "%SDKPATH%\kernel32.lib" "%SDKPATH%\libucrt.lib" "%SDKPATH%\uuid.lib"
    Ответить
    • > BAT файл

      В тред вызывается πдар, чтобы объяснить, что bat-файлами в 21 веке пользуются только анскильные питушки, нужно использовать православный помершелл.
      Ответить
      • мне некогда ждать когда поверхелл загрузиться .. и их ужасный синтаксис меня бесит даже больше чем поинтеры в С
        Ответить
        • > мне некогда ждать когда поверхелл загрузиться

          Какой MS-дизайн )))
          Ответить
        • >мне некогда ждать когда поверхелл загрузиться .

          Воспользуйся любым процессором старше i3, выпущенным в последние 10 лет
          Ответить
            • Вообще да, страшно подумать как можно было сделать шелл, который тормозит.
              Думаю дело в том, что там CLR прогревается, джитится, итд
              Ответить
              • вот например торвальдс делал шелл нормально, получилась ось. а эти для своей оси шелл сделать не могут
                Ответить
                • Торвальдс не делал шел кмк
                  Шелл делал GNU, а Торвальдс делал эмулятор терминала
                  Ответить
                  • а помершелл не в своём специальном эмуляторе живёт?
                    Ответить
                    • да вроде бы нет, это обычная виндоконсоль (conhost или как там оно)

                      Просто это .net приложение
                      Ответить
                    • обычная консоль, НО с включенным искаробки quick edit, какой прогресс
                      Ответить
              • еще надо подписи батников проверить

                я однажды хотел чегото там запустить, а оно мне говорит - неее, ты сначала другую мне версию скачай

                в общем Microsofto Windowso как всегда
                Ответить
                • вот, сейчас попробовал запустить, а у него еще есть заметная задержка между баннером про microsofto™® и к приглашением к вводу лол
                  Ответить
          • у меня i9900k в разгоне 5Ghz. еще раз мне некогда ждать когда это уебище удосужится запуститься. и + его синтакс меня бесит
            Ответить
            • у тебя что-то тротлится явно, не должен ps на нем итупить

              >синтаксис бесит
              ну тут уже ничегол не сделать
              Ответить
              • ps при старте везде тупит. Потом уже норм.

                Реально бесит, что он не открывается мгновенно как в линухе.
                Ответить
                • у меня не тупит практически, но конечно медленее баша

                  оно и понятно, учитывая что подымается .net
                  Ответить
              • никогда не понимал что мешало просто тупо сделать JavaScript терминал - да и все. нет бля синтаксис уродский придумали который ваще не понять
                Ответить
                • Причём там можно ассемблерные сишарповые вставки юзать.
                  Ответить
                  • не сишарповые, а дотнетовые

                    весь PS на дотнете
                    cmdлеты тоже

                    все объекты, передаваемые через пайпы, тоже .net объекты
                    Ответить
                    • Как мне написать вставку на вижуал бейсике? А сишарп там прям считай инлайн...
                      Ответить
                      • приведи пример как ты пишешь что-то на сишарпе внутри PS

                        например, как делаешь linq
                        Ответить
                          • это же $php

                            > high-performance-powershell
                            а вот с этого я заголосил

                            кстати, у меня после заметной паузы высирает с кривым цветом следующее
                            Не удается найти перегрузку для "Where" и количества аргументов: "2".
                            строка:1 знак:32
                            + [System.Linq.Enumerable]::Where <<<< ($data, [Func[object,bool]]{ param($x) $x -gt 5 })
                            + CategoryInfo : NotSpecified: (:) [], MethodException
                            + FullyQualifiedErrorId : MethodCountCouldNotFindBest

                            наверное dll hell не тот опять
                            Ответить
  • может кому интересно могу запилить readme и дать git на это "говно"
    Ответить
  • да и замметьте что const и let это небо и земля. const не создает переменной в стеке а let создает
    Ответить
  • В PHP нет никакой ебли - программируешь и течёшь от эйфории.
    Ответить
  • Волею судеб у меня на диске цэ образовалась папка с названием "...", и весь софт сошел с ума. Какой багор ))
    Ответить

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

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

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


    8