From 80749242cc6aa604c6ee3a7e3169df73c14e55d2 Mon Sep 17 00:00:00 2001 From: scratko Date: Tue, 2 Apr 2024 02:03:57 +0300 Subject: Minor changes Corrected description. Fixed pointer symbol in some places. --- README.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index a7608ae..9d44c48 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,24 @@ ## Introduction Remarkably, this program is written in C without using library features at all. -Assembler modules are used for program entry point and system call wrappers. +This means that even the standard C library is not involved in the program. One +of the main properties of C language is zero runtime. This term emphasizes zero +size of the runtime library, i.e. the part of the library that is necessarily +contained in all executable files created by a particular compiler. + +Assembler modules are written for program entry point and system call wrappers. +For writing and reading (standard output/input stream) -- `sys_read` and +`sys_write`. Also to terminate the program with a return code (assume in case of an +error) -- `sys_exit`. In addition, a primitive dynamic memory (heap) management +system is created. When an element is added to the stack, it checks the +availability of free addresses in the heap (which were previously allocated but +then freed). When an element is removed from the stack, the current address +from the heap is marked free so that it can be occupied later. + +Assembler functions `sys_alloc` and `sys_free` are written to allocate and free +memory. They invoke system call brk(), which has number 45. + +## About algorithm This program is based on two algorithms: reverse polish notation (RPN) and Dijkstra's algorithm. @@ -27,7 +44,7 @@ operands as well as operation symbols (again, in some cases) are inserted into the RPN stack. The algorithm is described in more detail in the book А.В. Столяров "Программирование: введение в профессию" (том 1, ДМК Пресс, стр. 644). -## Building and usagea +## Building and usage ``` git clone https://git.scratko.xyz/arithmetic-expression-computator @@ -38,6 +55,7 @@ Launch the program `./arith_exp` After starting, enter an arithmetic expression. Notes: + - the expression must not contain any space characters - negative values must be surrounded by brackets - you can see an example of the expression on the screenshot above. -- cgit v1.2.3