printf from libc (NASM/YASM)

Модератор: Модераторы разделов

BratSinot
Сообщения: 812
ОС: Slackware64

printf from libc

Сообщение BratSinot »

Доброго времени суток!

Имеем такую программу:

Код:

;Используется вызов printf из libc section .data MASK db "%u",10 section .text global main extern printf main: mov rsi, 100 mov rdi, MASK xor rax, rax call printf pop rax mov rbx, 0 mov rax, 1 int 0x80

Вспоминая строки в C, то каждая строка должна заканчиваться символом переноса/нулевым символом. Мы имеем это здесь:

Код: Выделить всё

        MASK db "%u",10

Где 10 символ переноса. Так вот, после вызова printf все исправно выводится, но на новой строке. Убрав то самое 10, или поставив 0 ничего не выводится.
Вопрос: Как можно вывести, без перехода на новую строку?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: printf from libc

Сообщение sash-kan »

Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: printf from libc

Сообщение BratSinot »

sash-kan писал(а):
18.06.2011 01:46
читали?

Нет не читал, а прочитав не увидел ничего нового, а уж тем более по моему вопросу.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5491
ОС: Gentoo

Re: printf from libc

Сообщение /dev/random »

Вывод в FILE* обычно буферизуется построчно. Подробности в манах по setbuf() и fflush(), либо в любом учебнике по C. Да-да, по C, а не по ассемблеру.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: printf from libc

Сообщение sash-kan »

BratSinot писал(а):
18.06.2011 09:25
Нет не читал, а прочитав не увидел ничего нового, а уж тем более по моему вопросу.
там в примере с printf-ом для передачи параметров используется стэк· ассемблерами x86 никогда не занимался, поэтому не могу утверждать, что это единственно правильно, но, по крайней мере, у автора статьи так явно работает·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
CycaHuH
Сообщения: 85
ОС: FreeBSD; Archlinux; Calculate

Re: printf from libc

Сообщение CycaHuH »

sash-kan писал(а):
18.06.2011 16:55
там в примере с printf-ом для передачи параметров используется стэк· ассемблерами x86 никогда не занимался, поэтому не могу утверждать, что это единственно правильно, но, по крайней мере, у автора статьи так явно работает·

ЕМНИП, на x86-64, о котором, судя по названиям регистров, идет речь, параметры передаются через регистры.
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: printf from libc

Сообщение BratSinot »

CycaHuH писал(а):
18.06.2011 20:13
sash-kan писал(а):
18.06.2011 16:55
там в примере с printf-ом для передачи параметров используется стэк· ассемблерами x86 никогда не занимался, поэтому не могу утверждать, что это единственно правильно, но, по крайней мере, у автора статьи так явно работает·

ЕМНИП, на x86-64, о котором, судя по названиям регистров, идет речь, параметры передаются через регистры.

Это не важно, один черт в том указанном примере будет переход на новую строку.
Спасибо сказали: