Skip to content

alexeev-prog/asm-putsf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

asm-putsf

Реализация printf для C на языке ассеблера (компилятор FASM)

Установка

У вас должна быть 64 битная Linux-система (если у вас другая система, измените код, если у вас другая разрядность, то измените регистры в коде).

Также у вас должен быть установлен gnu-линковщик, fasm (flat assembly) и система сборки make

# Клонирование репозитория
git clone https://github.com/alexeev-prog/asm-putsf.git
cd asm-putsf

# компиляция и линковка
make build clean

# запуск
make run

Пример использования

Пример кода:

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);
}

Компиляция:

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