Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Andrei Petrenko
assignment-1-io-library
Commits
8fcfad48
Commit
8fcfad48
authored
4 years ago
by
Igor Zhirkov
Browse files
Options
Download
Email Patches
Plain Diff
Update lib.inc
parent
4bd2dc83
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
9 deletions
+40
-9
lib.inc
lib.inc
+40
-9
No files found.
lib.inc
View file @
8fcfad48
section
.
text
;
Принимает
код
возврата
и
завершает
текущий
процесс
exit
:
xor
rax
,
rax
,
ret
;
Принимает
указатель
на
нуль
-
терминированную
строку
,
возвращает
её
длину
string_length
:
xor
rax
,
rax
ret
;
Принимает
указатель
на
нуль
-
терминированную
строку
,
выводит
её
в
stdout
print_string
:
xor
rax
,
rax
ret
;
Принимает
код
символа
и
выводит
его
в
stdout
print_char
:
xor
rax
,
rax
ret
;
Переводит
строку
(
выводит
символ
с
кодом
0xA
)
print_newline
:
xor
rax
,
rax
ret
;
Выводит
беззнаковое
8
-
байтовое
число
в
десятичном
формате
;
Совет
:
выделите
место
в
стеке
и
храните
там
результаты
деления
;
Не
забудьте
перевести
цифры
в
их
ASCII
коды
.
print_uint
:
xor
rax
,
rax
ret
;
Выводит
знаковое
8
-
байтовое
число
в
десятичном
формате
print_int
:
xor
rax
,
rax
ret
;
Принимает
два
указателя
на
нуль
-
терминированные
строки
,
возвращает
1
если
они
равны
,
0
иначе
string_equals
:
xor
rax
,
rax
ret
;
Читает
один
символ
из
stdin
и
возвращает
его
.
Возвращает
0
если
достигнут
конец
потока
read_char
:
xor
rax
,
rax
ret
;
Принимает
:
адрес
начала
буфера
,
размер
буфера
;
Читает
в
буфер
слово
из
stdin
,
пропуская
пробельные
символы
в
начале
,
.
;
Пробельные
символы
это
пробел
0x20
,
табуляция
0x9
и
перевод
строки
0x10
.
;
Останавливается
и
возвращает
0
если
слово
слишком
большое
для
буфера
;
При
успехе
возвращает
адрес
буфера
.
;
Эта
функция
должна
дописывать
к
слову
нуль
-
терминатор
read_word
:
ret
;
rdi
points
to
a
string
;
returns
rax
:
number
,
rdx
:
length
;
Принимает
указатель
на
строку
,
пытается
;
прочитать
из
её
начала
беззнаковое
число
.
;
Возвращает
в
rax
:
число
,
rdx
:
его
длину
в
символах
;
rdx
=
0
если
число
прочитать
не
удалось
parse_uint
:
xor
rax
,
rax
ret
;
rdi
points
to
a
string
;
returns
rax
:
number
,
rdx
:
length
;
Принимает
указатель
на
строку
,
пытается
;
прочитать
из
её
начала
знаковое
число
.
;
Если
есть
знак
,
пробелы
между
ним
и
числом
не
разрешены
.
;
Возвращает
в
rax
:
число
,
rdx
:
его
длину
в
символах
(
включая
знак
,
если
он
был
)
;
rdx
=
0
если
число
прочитать
не
удалось
parse_int
:
xor
rax
,
rax
ret
;
Принимает
указатель
на
строку
,
указатель
на
буфер
и
длину
буфера
;
Копирует
строку
в
буфер
;
Возвращает
длину
строки
если
она
умещается
в
буфер
,
иначе
0
string_copy
:
xor
rax
,
rax
ret
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment