diff --git a/src/.gitignore b/src/.gitignore index 23854d3..ee7d724 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,3 +1,2 @@ a.out a.mcfunction -mcasm diff --git a/src/DataPack/mc-asm/data/mcasm/functions/add.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/add.mcfunction new file mode 100644 index 0000000..419555f --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/add.mcfunction @@ -0,0 +1,6 @@ +# add.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A + B +scoreboard players operation __ret Internal = __arg1 Internal +scoreboard players operation __ret Internal += __arg2 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/ass.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/ass.mcfunction new file mode 100644 index 0000000..0a19486 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/ass.mcfunction @@ -0,0 +1,6 @@ +# ass.mcfunction +# __arg1 integer A +# returns A +# +# this function exists for generalization in the complier. +scoreboard players operation __ret Internal = __arg1 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/div.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/div.mcfunction new file mode 100644 index 0000000..aa268b3 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/div.mcfunction @@ -0,0 +1,6 @@ +# div.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A / B +scoreboard players operation __ret Internal = __arg1 Internal +scoreboard players operation __ret Internal /= __arg2 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/eq.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/eq.mcfunction new file mode 100644 index 0000000..05dfe4f --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/eq.mcfunction @@ -0,0 +1,6 @@ +# eq.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A == B +scoreboard players set __ret Internal 0 +execute if score __arg1 Internal = __arg2 Internal run scoreboard players set __ret Internal 1 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/ge.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/ge.mcfunction new file mode 100644 index 0000000..92751ff --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/ge.mcfunction @@ -0,0 +1,6 @@ +# ge.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A >= B +scoreboard players set __ret Internal 0 +execute if score __arg1 Internal >= __arg2 Internal run scoreboard players set __ret Internal 1 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/gt.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/gt.mcfunction new file mode 100644 index 0000000..7f3f190 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/gt.mcfunction @@ -0,0 +1,6 @@ +# gt.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A > B +scoreboard players set __ret Internal 0 +execute if score __arg1 Internal > __arg2 Internal run scoreboard players set __ret Internal 1 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/jif.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/jif.mcfunction new file mode 100644 index 0000000..8ce2751 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/jif.mcfunction @@ -0,0 +1,7 @@ +# jif.mcfunction +# __arg1 condition value +# __arg2 __pc value +# returns nothing +# +# change __pc to the given value, if condition is NOT zero. +execute unless score __arg1 Internal matches 0 run scoreboard players operation __pc Internal = __arg2 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/jmp.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/jmp.mcfunction new file mode 100644 index 0000000..2bf2604 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/jmp.mcfunction @@ -0,0 +1,6 @@ +# jmp.mcfunction +# __arg1 __pc value +# returns nothing +# +# change __pc to the given value +scoreboard players operation __pc Internal = __arg1 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/le.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/le.mcfunction new file mode 100644 index 0000000..56cdd01 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/le.mcfunction @@ -0,0 +1,6 @@ +# le.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A <= B +scoreboard players set __ret Internal 0 +execute if score __arg1 Internal <= __arg2 Internal run scoreboard players set __ret Internal 1 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/load.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/load.mcfunction new file mode 100644 index 0000000..c165f13 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/load.mcfunction @@ -0,0 +1,15 @@ +tellraw @a {"text": "MC-ASM Loaded!", "color": "blue"} + +scoreboard objectives add Internal dummy +scoreboard objectives add Variables dummy + +scoreboard players reset * Internal +scoreboard players reset * Variables + +scoreboard objectives setdisplay sidebar Internal + +scoreboard players add __arg1 Internal 0 +scoreboard players add __arg2 Internal 0 +scoreboard players add __arg3 Internal 0 +scoreboard players add __ret Internal 0 +scoreboard players add __pc Internal 1 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/lt.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/lt.mcfunction new file mode 100644 index 0000000..6ff6a88 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/lt.mcfunction @@ -0,0 +1,6 @@ +# lt.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A < B +scoreboard players set __ret Internal 0 +execute if score __arg1 Internal < __arg2 Internal run scoreboard players set __ret Internal 1 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/mod.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/mod.mcfunction new file mode 100644 index 0000000..45bdadf --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/mod.mcfunction @@ -0,0 +1,6 @@ +# mod.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A % B +scoreboard players operation __ret Internal = __arg1 Internal +scoreboard players operation __ret Internal %= __arg2 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/mul.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/mul.mcfunction new file mode 100644 index 0000000..3260835 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/mul.mcfunction @@ -0,0 +1,6 @@ +# mul.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A * B +scoreboard players operation __ret Internal = __arg1 Internal +scoreboard players operation __ret Internal *= __arg2 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/ne.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/ne.mcfunction new file mode 100644 index 0000000..e530117 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/ne.mcfunction @@ -0,0 +1,6 @@ +# ne.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A != B +scoreboard players set __ret Internal 1 +execute if score __arg1 Internal = __arg2 Internal run scoreboard players set __ret Internal 0 diff --git a/src/DataPack/mc-asm/data/mcasm/functions/sub.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/sub.mcfunction new file mode 100644 index 0000000..e38e70f --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/sub.mcfunction @@ -0,0 +1,6 @@ +# sub.mcfunction +# __arg1 integer A +# __arg2 integer B +# returns A - B +scoreboard players operation __ret Internal = __arg1 Internal +scoreboard players operation __ret Internal -= __arg2 Internal \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/testing/print_internals.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/testing/print_internals.mcfunction new file mode 100644 index 0000000..e072c0e --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/testing/print_internals.mcfunction @@ -0,0 +1 @@ +tellraw @a ["",{"text":"*********************\n__arg1 = "},{"score":{"name":"__arg1","objective":"Internal"}},{"text":"\n__arg2 = "},{"score":{"name":"__arg2","objective":"Internal"}},{"text":"\n__ret \u0020= "},{"score":{"name":"__ret","objective":"Internal"}}] \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/testing/test_cases.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/testing/test_cases.mcfunction new file mode 100644 index 0000000..7f53de0 --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/testing/test_cases.mcfunction @@ -0,0 +1,43 @@ +# test_cases.mcfunction +# testing/test_function.mcfunction will be ran with the following arguments. +# this is meant to be only used while testing. + +scoreboard players set __arg1 Internal 0 +scoreboard players set __arg2 Internal 0 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal 10 +scoreboard players set __arg2 Internal 0 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal 0 +scoreboard players set __arg2 Internal 10 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal 10 +scoreboard players set __arg2 Internal 20 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal 10 +scoreboard players set __arg2 Internal -20 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal -100 +scoreboard players set __arg2 Internal -10 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal -10 +scoreboard players set __arg2 Internal -10 +function mcasm:testing/test_function +function mcasm:testing/print_internals + +scoreboard players set __arg1 Internal 30 +scoreboard players set __arg2 Internal 30 +function mcasm:testing/test_function +function mcasm:testing/print_internals \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/testing/test_function.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/testing/test_function.mcfunction new file mode 100644 index 0000000..ae9dadc --- /dev/null +++ b/src/DataPack/mc-asm/data/mcasm/functions/testing/test_function.mcfunction @@ -0,0 +1,4 @@ +# test_function.mcfunction +# the desired function to be tested in testing/test_cases.mcfunction. +# this is meant to be only used while testing. +function mcasm:ass \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/mcasm/functions/tick.mcfunction b/src/DataPack/mc-asm/data/mcasm/functions/tick.mcfunction new file mode 100644 index 0000000..e69de29 diff --git a/src/DataPack/mc-asm/data/minecraft/tags/functions/load.json b/src/DataPack/mc-asm/data/minecraft/tags/functions/load.json new file mode 100644 index 0000000..ba1fa53 --- /dev/null +++ b/src/DataPack/mc-asm/data/minecraft/tags/functions/load.json @@ -0,0 +1,5 @@ +{ + "values": [ + "mcasm:load" + ] +} \ No newline at end of file diff --git a/src/DataPack/mc-asm/data/minecraft/tags/functions/tick.json b/src/DataPack/mc-asm/data/minecraft/tags/functions/tick.json new file mode 100644 index 0000000..404c50d --- /dev/null +++ b/src/DataPack/mc-asm/data/minecraft/tags/functions/tick.json @@ -0,0 +1,5 @@ +{ + "values": [ + "mcasm:tick" + ] +} \ No newline at end of file diff --git a/src/DataPack/mc-asm/pack.mcmeta b/src/DataPack/mc-asm/pack.mcmeta new file mode 100644 index 0000000..e886707 --- /dev/null +++ b/src/DataPack/mc-asm/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 8, + "description": "MC-ASM Subroutines, by Gunwoo Kim, Charles Hong" + } +} \ No newline at end of file