Ошибка: Failed to parse the Currency Converter XML document.
$20 352.04
|
Ошибка: Failed to parse the Currency Converter XML document.
$51 654.94
|
Ошибка: Failed to parse the Currency Converter XML document.
$49 737.60
|
Взаимодействие с GLIBC
GLIBC стандартная библиотека Си от GNU. Если вы программируете на ассемблере под Linux, то использование функций из этой библиотеки хороший способ сократить размер программы и затраченные усилия. Безусловно, использование их замедляет программу, но это всего лишь значит, что их не стоит использовать в критических участках циклах. Если же вы используете GLIBC скажем для форматированного вывода на консоль, то вряд ли вы заметите какое-нибудь замедление.
Более того использование GLIBC в большинстве случаев сделает вашу программу легко портируемой на многие другие UNIX-платформы.
В качестве примера рассмотрим программу, которая импортирует функцию puts (вывод на консоль null-terminated строки)
;Точка входа «_start» на самом деле находится
;в подключаемом *.o файле стандартной библиотеки Си
;Она передает управление на функцию «main»,
;которая должна находиться в нашей программе
global main
;Внешние функции
extern exit
extern puts
;Сегмент кода:
section .text
;Функция main:
main:
;Параметры передаются в стеке:
push dword msg
call puts
;По конвенции Си вызывающая процедура должна
;очищать стек от параметров самостоятельно:
sub esp, 4
;Завершение программы с кодом выхода 0:
push dword 0
call exit
ret
;Сегмент данных
section .data
msg: db «An example of interfacing with GLIBC.»,0x0D,0
Компиляция:
nasm -felf inglibc.asm
Компоновка: Для вызова компоновщика с нужными параметрами мы не будем заморачиваться с командой ld, а воспользуемся GCC, который сам определит, что нужно нашему объектному файлу:
gcc inglibc.o -o inglibc