Skip to content
This repository was archived by the owner on Jul 17, 2025. It is now read-only.

Commit e84d9ff

Browse files
committed
style/docs: improve code style and docs
1 parent a8e8b2c commit e84d9ff

File tree

10 files changed

+57
-31
lines changed

10 files changed

+57
-31
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
commit a8e8b2c77236ca2649b301f640ed99fc21863574
2+
Author: alexeev-prog <alexeev.dev@mail.ru>
3+
Date: Sat Dec 7 00:48:16 2024 +0700
4+
5+
improve mnemonics structure, improve templates and segments, add color highlight
6+
7+
commit 06a8bcdce69244a027f1b5561bd06f1279168170
8+
Author: alexeev-prog <alexeev.dev@mail.ru>
9+
Date: Thu Dec 5 23:48:11 2024 +0700
10+
11+
improve docs
12+
113
commit 098947daf1add7002b3247f606cffb80c26fa974
214
Author: alexeev-prog <alexeev.dev@mail.ru>
315
Date: Thu Dec 5 23:46:46 2024 +0700

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ if __name__ == "__main__":
7272
main()
7373
```
7474

75+
```bash
76+
$ fasm example.asm example
77+
$ ./example
78+
79+
Hello, World!
80+
```
81+
7582
## Check Other My Projects
7683

7784
+ [SQLSymphony](https://github.com/alexeev-prog/SQLSymphony) - simple and fast ORM in sqlite (and you can add other DBMS)

example.asm

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,30 @@ start: ; Label start with 1 commands:
1616
segment readable executable
1717

1818
print_string: ; Segment readable executable in FASM is a directive for defining a section of code with readable and executable attributes.
19-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20-
; Using PrintStringTemplate: Printing the string 'Hello, World!' to stdout ;
21-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
22-
23-
MOV EAX, 4 ; Loading 4 value into EAX register.
24-
MOV ECX, msg ; Loading msg value into ECX register.
25-
MOV EDX, msg_size ; Loading msg_size value into EDX register.
26-
INT 128 ; Call software interrupt 128: SYSCALL
27-
MOV EAX, 1 ; Loading 1 value into EAX register.
28-
MOV EBX, EBX ; Zeroing the EBX register using XOR
29-
INT 128 ; Call software interrupt 128: SYSCALL
19+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20+
; Using PrintStringTemplate: Printing the string 'Hello, World!' to stdout ;
21+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
22+
23+
MOV EAX, 4 ; Loading 4 value into EAX register.
24+
MOV ECX, msg ; Loading msg value into ECX register.
25+
MOV EDX, msg_size ; Loading msg_size value into EDX register.
26+
INT 128 ; Call software interrupt 128: SYSCALL
27+
MOV EAX, 1 ; Loading 1 value into EAX register.
28+
MOV EBX, EBX ; Zeroing the EBX register using XOR
29+
INT 128 ; Call software interrupt 128: SYSCALL
3030

3131
print_string2: ; Segment readable executable in FASM is a directive for defining a section of code with readable and executable attributes.
32-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
33-
; Using PrintStringTemplate: Printing the string 'Hello, World!' to stdout ;
34-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
35-
36-
MOV EAX, 4 ; Loading 4 value into EAX register.
37-
MOV ECX, msg2 ; Loading msg2 value into ECX register.
38-
MOV EDX, msg2_size ; Loading msg2_size value into EDX register.
39-
INT 128 ; Call software interrupt 128: SYSCALL
40-
MOV EAX, 1 ; Loading 1 value into EAX register.
41-
MOV EBX, EBX ; Zeroing the EBX register using XOR
42-
INT 128 ; Call software interrupt 128: SYSCALL
32+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
33+
; Using PrintStringTemplate: Printing the string 'Hello, World!' to stdout ;
34+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
35+
36+
MOV EAX, 4 ; Loading 4 value into EAX register.
37+
MOV ECX, msg2 ; Loading msg2 value into ECX register.
38+
MOV EDX, msg2_size ; Loading msg2_size value into EDX register.
39+
INT 128 ; Call software interrupt 128: SYSCALL
40+
MOV EAX, 1 ; Loading 1 value into EAX register.
41+
MOV EBX, EBX ; Zeroing the EBX register using XOR
42+
INT 128 ; Call software interrupt 128: SYSCALL
4343

4444

4545
;; Segment readable writeable in FASM is a definition of a segment of program data codes, where the attributes readable (the contents of the segment can be read) and writeable (program commands can both read codes and change their values) are specified for it.

flexpasm/instructions/registers.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from enum import Enum
22
from typing import Union
33

4-
54
from flexpasm.instructions.base import BaseRegister
65

76

flexpasm/instructions/segments.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from abc import ABC, abstractmethod
22

3-
43
from flexpasm.mnemonics.base import BaseMnemonic
54
from flexpasm.settings import MAX_MESSAGE_LENGTH
65

@@ -68,8 +67,16 @@ def code(self):
6867
return self._code
6968

7069
def set_commands_for_label(
71-
self, label: str, commands: list, indentation: str = "\t"
70+
self,
71+
label: str,
72+
commands: list,
73+
indentation_level: int = 0,
7274
):
75+
if indentation_level == 0:
76+
indentation = ""
77+
else:
78+
indentation = "\t" * indentation_level
79+
7380
result = ""
7481

7582
for command in commands:

flexpasm/mnemonics/arithmetic.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from typing import Union
22

3-
43
from flexpasm.instructions.base import BaseRegister
54
from flexpasm.mnemonics.base import _DefaultMnemonic
65

flexpasm/mnemonics/base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from enum import Enum
33
from typing import Union
44

5-
65
from flexpasm.instructions.base import BaseRegister
76
from flexpasm.rich_highlighter import Highlighter
87
from flexpasm.settings import MAX_MESSAGE_LENGTH

flexpasm/mnemonics/data.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from typing import Union
22

3-
43
from flexpasm.instructions.base import BaseRegister
54
from flexpasm.mnemonics.base import _DefaultMnemonic
65

flexpasm/program.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def _post_post_warnings(self):
6767
def add_label(self, label: Label):
6868
print(f"[bold]Add label: {label.entry}[/bold]")
6969
self._code.append(f";; Label Entry {label.entry}")
70-
self._code.append(f"{label.generate()}\nf")
70+
self._code.append(f"{label.generate()}\n")
7171

7272
def add_instruction(self, instruction: str, indentation_level: int = 0):
7373
print(f"[bold]Add instruction: {instruction}[/bold]")

flexpasm/templates.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from abc import ABC, abstractmethod
22

3-
43
from flexpasm.instructions.registers import get_registers
54
from flexpasm.instructions.segments import ReadableWriteableSegment
65
from flexpasm.mnemonics.data import MovMnemonic
@@ -25,7 +24,12 @@ def __init__(self, string: str, var: str = "msg", entry: str = "print_string"):
2524
self.var = var
2625
self.entry = entry
2726

28-
def generate(self, mode: str, indentation: str = "\t") -> str:
27+
def generate(self, mode: str, indentation_level: int = 0) -> str:
28+
if indentation_level == 0:
29+
indentation = ""
30+
else:
31+
indentation = "\t" * indentation_level
32+
2933
comment = self.comment()
3034

3135
regs = get_registers(mode)

0 commit comments

Comments
 (0)