https://github.com/alexeev-prog/asm-putsf
PrintF in assembly for C
https://github.com/alexeev-prog/asm-putsf
asm asmx86 c fasm linux printf
Last synced: 7 days ago
JSON representation
PrintF in assembly for C
- Host: GitHub
- URL: https://github.com/alexeev-prog/asm-putsf
- Owner: alexeev-prog
- License: mit
- Created: 2025-06-15T20:45:20.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-09-04T15:38:42.000Z (8 months ago)
- Last Synced: 2026-01-26T12:58:22.667Z (3 months ago)
- Topics: asm, asmx86, c, fasm, linux, printf
- Language: HTML
- Homepage: https://alexeev-prog.github.io/asm-putsf/
- Size: 20.5 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# asm-putsf
Реализация printf для C на языке ассеблера (компилятор FASM)
## Установка
[Релизы программы]: https://github.com/alexeev-prog/asm-putsf/releases
У вас должна быть 64 битная Linux-система (если у вас другая система, измените код, если у вас другая разрядность, то измените регистры в коде).
Также у вас должен быть установлен gnu-линковщик, fasm (flat assembly) и система сборки make
```bash
# Клонирование репозитория
git clone https://github.com/alexeev-prog/asm-putsf.git
cd asm-putsf
# компиляция и линковка
make build clean
# запуск
make run
```
## Пример использования
Пример кода:
```c
typedef long long int int64_t;
extern void c_exit(int ret);
extern int64_t c_putsf(char *fmt, ...);
void _start(void) {
char *string = "PutsF";
int64_t decimal = 123;
char symbol = '!';
int64_t ret = c_putsf(
"{ %s, %d, %c }\n",
string, decimal, symbol
);
c_putsf("%d\n", ret); // print 3
c_exit(0);
}
```
Компиляция:
```bash
fasm src/putsf.asm bin/putsf.o
fasm src/c_putsf.asm bin/c_putsf.o
fasm src/c_exit.asm bin/c_exit.o
gcc -nostdlib -o bin/putsf.bin bin/putsf.o bin/c_putsf.o bin/c_exit.o bin/putsf_example.c
```