User Tools

Site Tools


sd:programming_in_c_for_the_sd-8516

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
sd:programming_in_c_for_the_sd-8516 [2026/06/17 09:38] – created appledogsd:programming_in_c_for_the_sd-8516 [2026/06/17 12:24] (current) appledog
Line 1: Line 1:
 = Programming in C for the SD-8516 = Programming in C for the SD-8516
  
-Yes, you can write C code for the SD-8516. However there are certain... limitations of the self-hosted project.+== Self-hosted TinyC v1 
 +Yes, you can write C code for the SD-8516. However there are certain... limitations of the self-hosted project. Staying positive however, you can do quite a bit. 
 + 
 +^ TinyC V1 can do.. ^ Not available ^ 
 +| Builtins (putchar, getchar, halt, yield) | no enums | 
 +| int and char* (8-bit access) | no inits i.e. no int a = 5; | 
 +| Expressions with precedence | no typedef, no casting, no conversions | 
 +| Local variables | no multiple return types (int only) | 
 +| if/else/else if | no static, extern, register, volatile, const | 
 +| Comparison operators | no && or {{{||}}}, no %, no bitwise ops | 
 +| while | int *p; p + 1 adds 1 byte, not 3 | 
 +| break/continue | no sizeof | 
 +| Multiple functions + function calls | no function pointers |  
 +| Function arguments | no varargs | 
 +| Pointers (read, write, address-of) | no void type | 
 +| Array indexing | no int a[10]; pointers only | 
 +| String literals | no type checking | 
 +| Hex literals | char arithmetic doesn't promote to int | 
 +| Character literals | no standard library | 
 +| Comments (//) | no dynamic memory | 
 +| Global variables | no file IO and no access to system INT libraries | 
 + 
 +What this is really is more of a baseline C you could write a better compiler in. That's where we are right now. Secondly, this is not packaged anywhere yet; I don't know if I want to release it because it is really not a very robust program; however, I very likely will, sometime in the fall. 
 + 
 +== Self Hosted TinyC v2 
 +v2 is v1 written in C. It compiles but there are issues. The issues revolve around the fact that this type of computer system is not really intended to host and run a C compiler. It can be done but as I have learned, the easy way forward is to rewrite the memory map and the kernal. This creates a chicken and egg problem. I need to rewrite the kernal, but I don't feel the need to rewrite the kernal in C just to rewrite the C compiler. 
 + 
 +== v3 (LLVM Back-end) 
 +The LLVM back-end is not self hosted, obviously. However, I am learning a lot about C by doing this and I may be able to use what I know to help write v4 under the v2 compiler. Or at least, write v4 in v3 then try to back-work v1/v2 to compile that. Either way, this is the path forward. 
 + 
 +== What about right now? 
 +Given all this I recommend you program in assembly first. That's really what this project is about, the retro way. You should give it a shot, if you've never tried assembly before. This platform is designed with hand-assembly in mind. Like the old days. 
 + 
 +However, if you really want to program in C, well, talk to me, and maybe we can work something out where I try to package this for you to test it out.
sd/programming_in_c_for_the_sd-8516.1781689100.txt.gz · Last modified: by appledog

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki