diff options
| author | Fuwn <[email protected]> | 2022-02-07 12:26:07 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-09 07:46:03 +0000 |
| commit | 4ace7cad20545d585d2ce8c5e93e4dc43358801b (patch) | |
| tree | 043b73bdd939f955f2b4d1e6309c8b697d6e0544 /examples | |
| download | divina-4ace7cad20545d585d2ce8c5e93e4dc43358801b.tar.xz divina-4ace7cad20545d585d2ce8c5e93e4dc43358801b.zip | |
feat(divina): pre-release :star:
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/greet/Divina.lua | 33 | ||||
| -rw-r--r-- | examples/greet/Main.asm | 17 | ||||
| -rw-r--r-- | examples/greet_from_library/Divina.lua | 22 | ||||
| -rw-r--r-- | examples/greet_from_library/Library.asm | 15 | ||||
| -rw-r--r-- | examples/greet_from_library/Main.asm | 10 | ||||
| -rw-r--r-- | examples/just_return/Divina.lua | 21 | ||||
| -rw-r--r-- | examples/just_return/Main.asm | 7 |
7 files changed, 125 insertions, 0 deletions
diff --git a/examples/greet/Divina.lua b/examples/greet/Divina.lua new file mode 100644 index 0000000..30649ea --- /dev/null +++ b/examples/greet/Divina.lua @@ -0,0 +1,33 @@ +-- This variable is `local`, meaning Divina cannot see it. +-- +--- @type string +local name = "greet-" .. tostring(os.time()) + +-- This variable is **not** `local`, Divina can see it. +-- +--- @class Package +--- @field public name string +--- @field public version string +--- @field public description string +--- @field public compile_options string[] +--- @field public minimum_divina_version string +--- @field public sources string[] +Package = { + name = name, + version = "0.1.0", + description = "Greet me!", + compile_options = {}, + -- The `Divina` table is a special table that you can access anywhere from + -- the `Divina.lua` script. It contains all sorts of important information. + -- + -- Here we are setting our `minimum_divina_version` to `Divina.version`. + minimum_divina_version = Divina.version, + sources = { + "Main.asm", + }, + type = Divina.Type.Bin, + arch = Divina.Arch.x64, +} + +-- http://lua-users.org/wiki/ModulesTutorial +return Package diff --git a/examples/greet/Main.asm b/examples/greet/Main.asm new file mode 100644 index 0000000..ae425ec --- /dev/null +++ b/examples/greet/Main.asm @@ -0,0 +1,17 @@ +global main +extern printf + +section .rodata +msg: db "Hello World!", 13, 10, 0 + +section .text +main: + sub rsp, 8 + sub rsp, 32 + mov rcx, qword msg + call printf + add rsp, 32 + + xor eax, eax + add rsp, 8 + ret diff --git a/examples/greet_from_library/Divina.lua b/examples/greet_from_library/Divina.lua new file mode 100644 index 0000000..3c628dc --- /dev/null +++ b/examples/greet_from_library/Divina.lua @@ -0,0 +1,22 @@ +--- @class Package +--- @field public name string +--- @field public version string +--- @field public description string +--- @field public compile_options string[] +--- @field public minimum_divina_version string +--- @field public sources string[] +Package = { + name = "greet_from_library", + version = "0.1.0", + description = "Greet me... from a library!", + compile_options = {}, + minimum_divina_version = Divina.version, + sources = { + "Main.asm", + "Library.asm", + }, + type = Divina.Type.Bin, + arch = Divina.Arch.x64, +} + +return Package diff --git a/examples/greet_from_library/Library.asm b/examples/greet_from_library/Library.asm new file mode 100644 index 0000000..a23acf3 --- /dev/null +++ b/examples/greet_from_library/Library.asm @@ -0,0 +1,15 @@ +global library_perform +extern printf + +section .rodata +message: db "Hello World!", 13, 10, 0 + +section .text +library_perform: + sub rsp, 8 + sub rsp, 32 + mov rcx, qword message + call printf + add rsp, 32 + + ret diff --git a/examples/greet_from_library/Main.asm b/examples/greet_from_library/Main.asm new file mode 100644 index 0000000..ff66ee3 --- /dev/null +++ b/examples/greet_from_library/Main.asm @@ -0,0 +1,10 @@ +global main +extern library_perform + +section .text +main: + call library_perform + + xor eax, eax + add rsp, 8 + ret diff --git a/examples/just_return/Divina.lua b/examples/just_return/Divina.lua new file mode 100644 index 0000000..3bfd9ab --- /dev/null +++ b/examples/just_return/Divina.lua @@ -0,0 +1,21 @@ +--- @class Package +--- @field public name string +--- @field public version string +--- @field public license string +--- @field public minimum_divina_version string +--- @field public sources string[] +--- @field public compiler string +Package = { + name = "just_return", + version = "0.1.0", + license = "GPL-3.0-only", + minimum_divina_version = Divina.version, + sources = { + "Main.asm", + }, + type = Divina.Type.Bin, + arch = Divina.Arch.x64, + compiler = "nasm", +} + +return Package diff --git a/examples/just_return/Main.asm b/examples/just_return/Main.asm new file mode 100644 index 0000000..f864099 --- /dev/null +++ b/examples/just_return/Main.asm @@ -0,0 +1,7 @@ +global main + +section .text +main: + xor eax, eax + add rsp, 8 + ret |