Coder Social home page Coder Social logo

ajunlonglive / kwork Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kw0rker/kwork

0.0 1.0 0.0 442 KB

Cross-platform bundle for development on low memory machines

License: GNU Lesser General Public License v2.1

Shell 0.19% C 99.37% Makefile 0.44%

kwork's Introduction

Kwork project

Installation

works only in POSIX enviroment !

make

run the examples

./run.sh example/primes_generator.kws

This page is the home for yet unfamous, but promising project Kwork

So what's all about?

You may be woundering.

This project is all you need to Develop, Deploy, and Run anything and everywhere !

The project is consisted of 3 main parts:

  • Kwork Virtual CPU

    -Capable of runing generated Kwork Assembly code
  • Kwork programming language

    -Capable of translating high level Kwork programming language to Kwork machine code
  • Kwork Operation System

    -Which is completly virtualy ran by Kwork Virtual CPU

Kwork virtual CPU

Basicly a C program which emulates work of the real CPU on low level. Uses Kworker assembly code (.kw) and executes it continnusly. Has a multithreading which is built upon rapidly changing Kwork vitural CPU instruction pointer between all threads and preserving the state of the register. Also supports thread locking

Kwork Programing language

A relativly high level programing language that generates Kwork assembly code which is later assebled to Kwork CPU machine code. Consists of Kwork compiler and Kwork assembler

Kwork OS

Fully emulated operation system with simple file system and with console ui. Emulates hardware.

Kwork project contributors section

Kwork OS

  • Hardware emulation
    • Standart input device
    • Standart output device
    • Storage device
    • Timer device
    • signals
  • Kernel
    • Memory managment
    • File system
    • Program execution
    • Signals handling
    • User space

Kwork Lang

  • Compiler
    • basic expressions support
    • floating numbers math and support
    • string literals support
    • static type checks
    • compile time checks
    • compile time execution
    • preprocessor
    • optimization
    • functions
    • loops
    • conditional statements
    • basic input and output
    • arrays
    • pointers
    • bitwise operations
    • structs
    • static memory
    • dynamic memory
  • Assembler
    • All operations supported

Virtual cpu

  • threading and locks
  • floating point numbers support
  • basic math and jump instuctions
  • bitwise instructions
  • pointers
  • basic system calls
  • stack

Kwork Lang Documentation

Kwork lang is multiplatform static JET compiled programming language with dynamic data types and every variable is static and global in the specific frame. There is NO semicolons so only one command can be in the line (does not include nested calls ex function calls params). Every program must start with main function declaration following by end keyword at the end of the frame

function main

… your code 

end

every key word is caps sensitive

Existing features: • Variable declaration let value_type lvalue = rvalue if value_type is not present used default type, word. rValue can be const/var/array/immutable string/expression

1.	let adress String = “Hello world\n"
2.	let a = b
3.	let word a = [20][20]
4.	let double D = b*b-(4*a*c)

lValue can be array subscription/memory dereferencing/one char letter/function call and all together

1.	let a[2] = 1337
2.	let a[B]….[Bn] = 69
3.	let @(lvalue) = 101 
4.	let D = “This language is trash\a\n”
5.	let root = CALL sqrt{25,2}

• loops loops can be for loop

1.	for lvalue=rvalue;rvalue;rvalue
{
…. Your code
}

First rvalue is starting value Second rvalue is expression which is true or false 1/0 Third rvalue is increment

for a=0;a<10;a++
{
….. do smt
}

putc puts char from var to stdout argument rvalue • put puts number from var to stdout argument rvalue

• branches

  1. if statement computes rvalue expression executes if true (any value >0)
if a<b
{
…your code
}
  1. else if statement computes rvalue only if previous if or else if frame failed
else if a>=b
{
…your code
}
  1. else statement executed only if all others if or else if frames failed
else
{
….your code here
}

input reads from stdin to variable • functions declaration

function return_type “Name_of_you function” (var_type_1 arg1,var_type_2 arg2,…,var_type_n argN)
…your code
return rvalue

functions are required to have a prototype at the begining of the file prototype return_type “Name_of_you function” (var_type_1 arg1,var_type_2 arg2,…,var_type_n argN)

• data types

{andress(for anything that points to memory), word (just int or long), doulbe(for floating point numbers) }

• data casts

{a} to cast expression to adress {w} to cast expression to word type {f} to cast expression to double data type

• rvalue expression CALL “your function name” {rvalue1,rvalue2,…,rvalueN} Will call a function with parameters o binary operands

  1. supports all basic math operations + * - / %

let a = (b%10)*(10/3+(5-7))

  1. supports all basic bitwise operations && || ^ >> <<

&& - >binary and

|| -> binary or

^ ->binary XOR

-> bit shift right

<< -> bit shift left

  1. logical operations < > <= >=

o unary operations 4. ++ -- @ # !

! -> bit inverse

++ -> increment value by one

-- -> decrement value by one

@ -> dereference the pointer

#-> get a pointer

• Comments

// your comment Pointer can be any value even the const let @(10) = 3010

this line would change the 10th assembly instruction to the instruction of summing acc with the assembly instruction.

Preprocessor

to include a lib use the following line at the header of the file

#include strings.kwh

Lets make self-modifying code great again. In this language as you can see basically no checks on what you do with memory so quite easy to shoot yourself in the foot 😊 Best of luck !!

kwork's People

Contributors

kw0rker avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.