Ассемблер в Linux для программистов C: различия между версиями

Содержимое удалено Содержимое добавлено
м →‎Hello, world!: стиль
Строка 222:
</source>
 
Вот только <code>printf(3)</code> — функция стандартной библиотеки Си, а не операционной системы. «Чем это плохо?» — спросите вы. Да, в общем, всё нормально, но, программируячитая наэтот ассемблереучебник, вы, наверновероятно, хотите взаимодействоватьузнать, непосредственночто спроисходит операционной«за системой,кулисами» афункций нестандартной библиотеки на уровне взаимодействия с библиотекойоперационной Сисистемой. Это, конечно же, не значит, что из ассемблера нельзя вызывать функции библиотеки Си. Просто мы пойдём более низкоуровневым путём.
 
Как вы уже, навернонаверное, знаете, стандартный вывод (<code>stdout</code>), в который выводит данные <code>printf(3)</code>, является обычным файловым дескриптором, заранее открываемый операционной системой. Номер этого дескриптора — 1. Теперь нам на помощь придёт системный вызов <code>write(2)</code>.
 
<pre>
Строка 313:
</pre>
 
Теперь посоветуембыло бы хорошо прочитать главу про отладчик [[GNU Debugger|GDB]]. Он вам понадобится для исследования работы ваших программ. Возможно, сейчас вы не всё поймёте, но эта глава специально расположена в конце, так как задумана больше как справочная, нежели обучающая. Для того, чтобы научиться работать с отладчиком, с ним нужно просто работать.
 
== Синтаксис ассемблера ==