Advertisement
LordJakub

Untitled

Feb 5th, 2024
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 9.71 KB | None | 0 0
  1. declare void @print(i8* %s)
  2. declare i8* @append(i8* %s1, i8* %s2)
  3. declare i32 @strlen(i8* %s)
  4. declare i8* @IntToString(i32 %num)
  5. declare i8* @Read()
  6. declare float @StringToFloat(i8* %s)
  7. declare i32 @StringToInt(i8* %s)
  8. declare i8* @FloatToString(float %f)
  9. declare i32 @FloatToInt(float %f)
  10. declare void @delay(i32 %ms)
  11. declare i32 @gInit()
  12. declare i32 @gCreateWindow(i8* %title, i32 %w, i32 %h)
  13. declare void @gSetColor(i32 %r, i32 %g, i32 %b, i32 %a)
  14. declare void @gClear()
  15. declare void @gClose()
  16. declare void @gQuit()
  17. declare void @gCreateFillRect(i32 %x, i32 %y, i32 %w, i32 %h)
  18. declare void @gUpdate()
  19. declare void @gCreateRect(i32 %x, i32 %y, i32 %w, i32 %h)
  20. declare void @gCreateLine(i32 %x1, i32 %y1, i32 %x2, i32 %y2)
  21. declare void @gCreateCircle(i32 %x, i32 %y, i32 %r)
  22. declare void @gCreatePoint(i32 %x, i32 %y)
  23. declare void @gCreatePicture(i8* %path, i32 %x, i32 %y, i32 %w, i32 %h)
  24. declare i1 @gKeyPressed(i8* %keyName)
  25. declare i1 @gMouseDown(i8* %button)
  26. declare i32 @gMouseX()
  27. declare i32 @gMouseY()
  28. declare i1 @gIsRunning()
  29. define i32 @graphics.Init() {
  30. entry:
  31.     %0 = call i32 @gInit()
  32.     ret i32 %0
  33. }
  34. define void @graphics.CreateWindow(i8* %title, i32 %w, i32 %h) {
  35. entry:
  36.     %0 = alloca i8*
  37.     store i8* %title, i8** %0
  38.     %1 = alloca i32
  39.     store i32 %w, i32* %1
  40.     %2 = alloca i32
  41.     store i32 %h, i32* %2
  42.     %3 = load i8*, i8** %0
  43.     %4 = load i32, i32* %1
  44.     %5 = load i32, i32* %2
  45.     %6 = call i32 @gCreateWindow(i8* %3, i32 %4, i32 %5)
  46.     ret void
  47. }
  48. define void @graphics.SetColor(i32 %r, i32 %g, i32 %b, i32 %a) {
  49. entry:
  50.     %0 = alloca i32
  51.     store i32 %r, i32* %0
  52.     %1 = alloca i32
  53.     store i32 %g, i32* %1
  54.     %2 = alloca i32
  55.     store i32 %b, i32* %2
  56.     %3 = alloca i32
  57.     store i32 %a, i32* %3
  58.     %4 = load i32, i32* %0
  59.     %5 = load i32, i32* %1
  60.     %6 = load i32, i32* %2
  61.     %7 = load i32, i32* %3
  62.     call void @gSetColor(i32 %4, i32 %5, i32 %6, i32 %7)
  63.     ret void
  64. }
  65. define void @graphics.Clear() {
  66. entry:
  67.     call void @gClear()
  68.     ret void
  69. }
  70.  
  71. define void @graphics.Close() {
  72. entry:
  73.     call void @gClose()
  74.     ret void
  75. }
  76. define void @graphics.Quit() {
  77. entry:
  78.     call void @gQuit()
  79.     ret void
  80. }
  81. define void @graphics.CreateFillRect(i32 %x, i32 %y, i32 %w, i32 %h) {
  82. entry:
  83.     %0 = alloca i32
  84.     store i32 %x, i32* %0
  85.     %1 = alloca i32
  86.     store i32 %y, i32* %1
  87.     %2 = alloca i32
  88.     store i32 %w, i32* %2
  89.     %3 = alloca i32
  90.     store i32 %h, i32* %3
  91.     %4 = load i32, i32* %0
  92.     %5 = load i32, i32* %1
  93.     %6 = load i32, i32* %2
  94.     %7 = load i32, i32* %3
  95.     call void @gCreateFillRect(i32 %4, i32 %5, i32 %6, i32 %7)
  96.     ret void
  97. }
  98. define void @graphics.Update() {
  99. entry:
  100.     call void @gUpdate()
  101.     ret void
  102. }
  103. define void @graphics.CreateRect(i32 %x, i32 %y, i32 %w, i32 %h) {
  104. entry:
  105.     %0 = alloca i32
  106.     store i32 %x, i32* %0
  107.     %1 = alloca i32
  108.     store i32 %y, i32* %1
  109.     %2 = alloca i32
  110.     store i32 %w, i32* %2
  111.     %3 = alloca i32
  112.     store i32 %h, i32* %3
  113.     %4 = load i32, i32* %0
  114.     %5 = load i32, i32* %1
  115.     %6 = load i32, i32* %2
  116.     %7 = load i32, i32* %3
  117.     call void @gCreateRect(i32 %4, i32 %5, i32 %6, i32 %7)
  118.     ret void
  119. }
  120. define void @graphics.CreateLine(i32 %x1, i32 %y1, i32 %x2, i32 %y2) {
  121. entry:
  122.     %0 = alloca i32
  123.     store i32 %x1, i32* %0
  124.     %1 = alloca i32
  125.     store i32 %y1, i32* %1
  126.     %2 = alloca i32
  127.     store i32 %x2, i32* %2
  128.     %3 = alloca i32
  129.     store i32 %y2, i32* %3
  130.     %4 = load i32, i32* %0
  131.     %5 = load i32, i32* %1
  132.     %6 = load i32, i32* %2
  133.     %7 = load i32, i32* %3
  134.     call void @gCreateLine(i32 %4, i32 %5, i32 %6, i32 %7)
  135.     ret void
  136. }
  137. define void @graphics.CreateCircle(i32 %x, i32 %y, i32 %r) {
  138. entry:
  139.     %0 = alloca i32
  140.     store i32 %x, i32* %0
  141.     %1 = alloca i32
  142.     store i32 %y, i32* %1
  143.     %2 = alloca i32
  144.     store i32 %r, i32* %2
  145.     %3 = load i32, i32* %0
  146.     %4 = load i32, i32* %1
  147.     %5 = load i32, i32* %2
  148.     call void @gCreateCircle(i32 %3, i32 %4, i32 %5)
  149.     ret void
  150. }
  151. define void @graphics.CreatePoint(i32 %x, i32 %y) {
  152. entry:
  153.     %0 = alloca i32
  154.     store i32 %x, i32* %0
  155.     %1 = alloca i32
  156.     store i32 %y, i32* %1
  157.     %2 = load i32, i32* %0
  158.     %3 = load i32, i32* %1
  159.     call void @gCreatePoint(i32 %2, i32 %3)
  160.     ret void
  161. }
  162. define void @graphics.CreatePicture(i8* %path, i32 %x, i32 %y, i32 %w, i32 %h) {
  163. entry:
  164.     %0 = alloca i8*
  165.     store i8* %path, i8** %0
  166.     %1 = alloca i32
  167.     store i32 %x, i32* %1
  168.     %2 = alloca i32
  169.     store i32 %y, i32* %2
  170.     %3 = alloca i32
  171.     store i32 %w, i32* %3
  172.     %4 = alloca i32
  173.     store i32 %h, i32* %4
  174.     %5 = load i8*, i8** %0
  175.     %6 = load i32, i32* %1
  176.     %7 = load i32, i32* %2
  177.     %8 = load i32, i32* %3
  178.     %9 = load i32, i32* %4
  179.     call void @gCreatePicture(i8* %5, i32 %6, i32 %7, i32 %8, i32 %9)
  180.     ret void
  181. }
  182. define i1 @graphics.KeyPressed(i8* %keyName) {
  183. entry:
  184.     %0 = alloca i8*
  185.     store i8* %keyName, i8** %0
  186.     %1 = load i8*, i8** %0
  187.     %2 = call i1 @gKeyPressed(i8* %1)
  188.     ret i1 %2
  189. }
  190. define i1 @graphics.MouseDown(i8* %button) {
  191. entry:
  192.     %0 = alloca i8*
  193.     store i8* %button, i8** %0
  194.     %1 = load i8*, i8** %0
  195.     %2 = call i1 @gMouseDown(i8* %1)
  196.     ret i1 %2
  197. }
  198. entry:
  199.     %0 = call i32 @gMouseX()
  200.     ret i32 %0
  201. }
  202. entry:
  203.     %0 = call i32 @gMouseY()
  204.     ret i32 %0
  205. }
  206. entry:
  207.     %0 = call i1 @gIsRunning()
  208.     ret i1 %0
  209. }
  210. define void @main(i32 %argc, i8** %argv) {
  211. entry:
  212.     %init = alloca i32
  213.     %0 = call i32 @graphics.Init()
  214.     store i32 %0, i32* %init
  215.     %1 = alloca [10 x i8]
  216.     store [10 x i8] c"Voca game\00", [10 x i8]* %1
  217.     %2 = getelementptr [10 x i8], [10 x i8]* %1, i32 0, i32 0
  218.     call void @graphics.CreateWindow(i8* %2, i32 800, i32 600)
  219.     %x = alloca i32
  220.     store i32 10, i32* %x
  221.     %y = alloca i32
  222.     store i32 10, i32* %y
  223.     %3 = call i1 @graphics.IsRunning()
  224.     br i1 %3, label %loop1, label %after1
  225.    
  226. after1:
  227.     %4 = alloca [12 x i8]
  228.     store [12 x i8] c"Closing app\00", [12 x i8]* %4
  229.     %5 = getelementptr [12 x i8], [12 x i8]* %4, i32 0, i32 0
  230.     call void @print(i8* %5)
  231.     call void @graphics.Close()
  232.     ret void
  233.  
  234. loop1:
  235.     %6 = call i1 @graphics.IsRunning()
  236.     br i1 %6, label %loop_body1, label %after1
  237.  
  238. loop_body1:
  239.     call void @graphics.SetColor(i32 255, i32 255, i32 255, i32 255)
  240.     call void @graphics.Clear()
  241.     call void @graphics.SetColor(i32 255, i32 0, i32 0, i32 255)
  242.     %7 = alloca [11 x i8]
  243.     store [11 x i8] c"player.png\00", [11 x i8]* %7
  244.     %8 = getelementptr [11 x i8], [11 x i8]* %7, i32 0, i32 0
  245.     %9 = load i32, i32* %x
  246.     %10 = load i32, i32* %y
  247.     call void @graphics.CreatePicture(i8* %8, i32 %9, i32 %10, i32 64, i32 64)
  248.     %11 = alloca [2 x i8]
  249.     store [2 x i8] c"W\00", [2 x i8]* %11
  250.     %12 = getelementptr [2 x i8], [2 x i8]* %11, i32 0, i32 0
  251.     %13 = call i1 @graphics.KeyPressed(i8* %12)
  252.     br i1 %13, label %true2, label %false2
  253.  
  254. true2:
  255.     %14 = load i32, i32* %y
  256.     %15 = sub i32 %14, 2
  257.     store i32 %15, i32* %y
  258.     br label %after2
  259.  
  260. false2:
  261.     br label %after2
  262.  
  263. after2:
  264.     %16 = alloca [2 x i8]
  265.     store [2 x i8] c"S\00", [2 x i8]* %16
  266.     %17 = getelementptr [2 x i8], [2 x i8]* %16, i32 0, i32 0
  267.     %18 = call i1 @graphics.KeyPressed(i8* %17)
  268.     br i1 %18, label %true3, label %false3
  269.  
  270. true3:
  271.     %19 = load i32, i32* %y
  272.     %20 = add i32 %19, 2
  273.     store i32 %20, i32* %y
  274.     br label %after3
  275.  
  276. false3:
  277.     br label %after3
  278.  
  279. after3:
  280.     %21 = alloca [2 x i8]
  281.     store [2 x i8] c"D\00", [2 x i8]* %21
  282.     %22 = getelementptr [2 x i8], [2 x i8]* %21, i32 0, i32 0
  283.     %23 = call i1 @graphics.KeyPressed(i8* %22)
  284.     br i1 %23, label %true4, label %false4
  285.  
  286. true4:
  287.     %24 = load i32, i32* %x
  288.     %25 = add i32 %24, 2
  289.     store i32 %25, i32* %x
  290.     br label %after4
  291.  
  292. false4:
  293.     br label %after4
  294.  
  295. after4:
  296.     %26 = alloca [2 x i8]
  297.     store [2 x i8] c"A\00", [2 x i8]* %26
  298.     %27 = getelementptr [2 x i8], [2 x i8]* %26, i32 0, i32 0
  299.     %28 = call i1 @graphics.KeyPressed(i8* %27)
  300.     br i1 %28, label %true5, label %false5
  301.  
  302. true5:
  303.     %29 = load i32, i32* %x
  304.     %30 = sub i32 %29, 2
  305.     store i32 %30, i32* %x
  306.     br label %after5
  307.  
  308. false5:
  309.     br label %after5
  310.  
  311. after5:
  312.     call void @graphics.Update()
  313.     %31 = sdiv i32 1000, 60
  314.     call void @delay(i32 %31)
  315.     call void @graphics.SetColor(i32 255, i32 255, i32 255, i32 255)
  316.     call void @graphics.Clear()
  317.     call void @graphics.SetColor(i32 255, i32 0, i32 0, i32 255)
  318.     %32 = alloca [11 x i8]
  319.     store [11 x i8] c"player.png\00", [11 x i8]* %32
  320.     %33 = getelementptr [11 x i8], [11 x i8]* %32, i32 0, i32 0
  321.     %34 = load i32, i32* %x
  322.     %35 = load i32, i32* %y
  323.     call void @graphics.CreatePicture(i8* %33, i32 %34, i32 %35, i32 64, i32 64)
  324.     %36 = alloca [2 x i8]
  325.     store [2 x i8] c"W\00", [2 x i8]* %36
  326.     %37 = getelementptr [2 x i8], [2 x i8]* %36, i32 0, i32 0
  327.     %38 = call i1 @graphics.KeyPressed(i8* %37)
  328.     br i1 %38, label %true6, label %false6
  329.  
  330. true6:
  331.     %39 = load i32, i32* %y
  332.     %40 = sub i32 %39, 2
  333.     store i32 %40, i32* %y
  334.     br label %after6
  335.  
  336. false6:
  337.     br label %after6
  338.  
  339. after6:
  340.     %41 = alloca [2 x i8]
  341.     store [2 x i8] c"S\00", [2 x i8]* %41
  342.     %42 = getelementptr [2 x i8], [2 x i8]* %41, i32 0, i32 0
  343.     %43 = call i1 @graphics.KeyPressed(i8* %42)
  344.     br i1 %43, label %true7, label %false7
  345.  
  346. true7:
  347.     %44 = load i32, i32* %y
  348.     %45 = add i32 %44, 2
  349.     store i32 %45, i32* %y
  350.     br label %after7
  351.  
  352. false7:
  353.     br label %after7
  354.  
  355. after7:
  356.     %46 = alloca [2 x i8]
  357.     store [2 x i8] c"D\00", [2 x i8]* %46
  358.     %47 = getelementptr [2 x i8], [2 x i8]* %46, i32 0, i32 0
  359.     %48 = call i1 @graphics.KeyPressed(i8* %47)
  360.     br i1 %48, label %true8, label %false8
  361.  
  362. true8:
  363.     %49 = load i32, i32* %x
  364.     %50 = add i32 %49, 2
  365.     store i32 %50, i32* %x
  366.     br label %after8
  367.  
  368. false8:
  369.     br label %after8
  370.  
  371. after8:
  372.     %51 = alloca [2 x i8]
  373.     store [2 x i8] c"A\00", [2 x i8]* %51
  374.     %52 = getelementptr [2 x i8], [2 x i8]* %51, i32 0, i32 0
  375.     %53 = call i1 @graphics.KeyPressed(i8* %52)
  376.     br i1 %53, label %true9, label %false9
  377.  
  378. true9:
  379.     %54 = load i32, i32* %x
  380.     %55 = sub i32 %54, 2
  381.     store i32 %55, i32* %x
  382.     br label %after9
  383.  
  384. false9:
  385.     br label %after9
  386.  
  387. after9:
  388.     call void @graphics.Update()
  389.     %56 = sdiv i32 1000, 60
  390.     call void @delay(i32 %56)
  391.     %57 = call i1 @graphics.IsRunning()
  392.     br i1 %57, label %loop1, label %after1
  393. }
  394.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement