Я новичок в Linux, для программирования сборки (GAS) и для английского. Поэтому, извините, если я напишу что-то неправильно. Надеюсь, Google Translate поможет мне написать все, что не так уж плохо.Что делает Linux при создании системного вызова?
Я хочу знать, как написать набор чисел, хранящихся в разделе .data
, в текстовый файл без вызова функций из любых библиотек (например, printf()
) и сделать это только с помощью возможностей ассемблера. Я не хочу готового решения. Я хочу знать, что делает ядро Linux после моего вызова записи. Как это работает? Как это устроено?
Я пытаюсь распечатать список номеров в STDOUT, но я получаю нечетный знак в моем терминале. Я думал, это происходит потому, что я не понимаю, как правильно работать с системным вызовом.
Это то, что я получил на текущий
.section .data
list: .long 12, 31, 42
.section .text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl $list, %ecx
movl $12, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
Этот код прекрасно работает для .ascii "Hello world\0"
, но не для списка чисел.
Это невероятно широкий предмет и требует довольно много знаний о знании, чтобы понять, что я подозреваю, что у вас его нет.Возможно, вам захочется разбить его на куски размером с укусом, показать нам те усилия, которые вы сделали до сих пор, и где вы застряли. – tangrs
Прочтите http://www.tldp.org/HOWTO/Assembly-HOWTO/. –
Я прочитал «Программирование с нуля» Джонатана Бартлетта. Какой из них лучше? – user2422443