initial commit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*.o
|
||||||
|
testprog
|
||||||
24
LICENSE
Normal file
24
LICENSE
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
This is free and unencumbered software released into the public domain.
|
||||||
|
|
||||||
|
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||||
|
distribute this software, either in source code form or as a compiled
|
||||||
|
binary, for any purpose, commercial or non-commercial, and by any
|
||||||
|
means.
|
||||||
|
|
||||||
|
In jurisdictions that recognize copyright laws, the author or authors
|
||||||
|
of this software dedicate any and all copyright interest in the
|
||||||
|
software to the public domain. We make this dedication for the benefit
|
||||||
|
of the public at large and to the detriment of our heirs and
|
||||||
|
successors. We intend this dedication to be an overt act of
|
||||||
|
relinquishment in perpetuity of all present and future rights to this
|
||||||
|
software under copyright law.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
For more information, please refer to <https://unlicense.org/>
|
||||||
13
Makefile
Normal file
13
Makefile
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
all: obj link
|
||||||
|
|
||||||
|
obj:
|
||||||
|
hcc -obj gw.hc
|
||||||
|
hcc -obj vd.hc
|
||||||
|
gcc -c main.c
|
||||||
|
|
||||||
|
link:
|
||||||
|
gcc gw.o vd.o main.o -o testprog
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o testprog
|
||||||
|
|
||||||
24
README.md
Normal file
24
README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# it works lol
|
||||||
|
|
||||||
|
the HolyC-lang compiler `hcc` just converts everything to straigh tassembly
|
||||||
|
and passes it to `gcc`, which i'm pretty sure just hands that off to the GNU
|
||||||
|
Assembler `as`.
|
||||||
|
|
||||||
|
you can get a copy of it [here](https://holyc-lang.com/install)
|
||||||
|
|
||||||
|
## run that shit
|
||||||
|
|
||||||
|
```
|
||||||
|
make
|
||||||
|
./testprog
|
||||||
|
```
|
||||||
|
|
||||||
|
If you take a peep at `Makefile` you'll notice that `hcc` can't compile multiple
|
||||||
|
objects in a single command. It also doesn't know when you've passed multiple
|
||||||
|
`.hc` file arguments, so it only processes the last one.
|
||||||
|
|
||||||
|
HolyC actually has some surprisingly rich features, like vectors, hashtables,
|
||||||
|
and even a built-in JSON class.
|
||||||
|
|
||||||
|
crazy stuff
|
||||||
|
|
||||||
40
main.c
Normal file
40
main.c
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
extern int voodoo(); /* from vd.hc */
|
||||||
|
extern void godword(); /* from gw.hc */
|
||||||
|
|
||||||
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
|
int t;
|
||||||
|
int f;
|
||||||
|
int g;
|
||||||
|
|
||||||
|
t = voodoo(1);
|
||||||
|
f = voodoo(0);
|
||||||
|
g = voodoo(4);
|
||||||
|
|
||||||
|
puts("voodoo() is a HolyC function.");
|
||||||
|
puts("If we pass 1 to it, it should return 0.");
|
||||||
|
puts("If we pass 0 to it, it should return 1.");
|
||||||
|
puts("For any other value, it should return 69.");
|
||||||
|
|
||||||
|
puts("Tests:");
|
||||||
|
|
||||||
|
printf("pass 1, want 0 --> t = %d\n", t);
|
||||||
|
printf("pass 0, want 1 --> f = %d\n", f);
|
||||||
|
|
||||||
|
printf("pass 4, want 69 --> g = %d\n", g);
|
||||||
|
|
||||||
|
puts("");
|
||||||
|
puts("Is this divine intellect?");
|
||||||
|
puts("");
|
||||||
|
|
||||||
|
puts("Now let's try printing to stdout.");
|
||||||
|
puts("We are going to call godword(), a void-returning function.");
|
||||||
|
puts("If this works correctly, it should say something biblical:");
|
||||||
|
|
||||||
|
godword();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user