Я очень новичок в сборке, поэтому, пожалуйста, прости меня, если это довольно тривиально.Для следующей команды:
$ ./prog1 *string*
, где string - передаваемый аргумент и некоторая последовательность символов (но без пробелов), как мне найти число символов в строка ?Я хочу, чтобы prog1 просто выводил именно то, что было напечатано, включая символ новой строки.Например:
$ ./prog1 helloworld
просто выведет "helloworld" и символ новой строки.Пока что мой код распечатывает входные данные, но мне нужно передать действительное количество символов в регистр% edx, чтобы он печатался правильно, в противном случае мне придется самому жестко кодировать количество символов.
.globl _start
_start:
movl $4,%eax
movl $1,%ebx
movl 4(%esp),%ecx ; <--- save argument to %ecx register
movl $100, %edx ; <--- need to know exactly how many characters in argument to %edx register
int $0x80
#Exit
movl $1,%eax
movl $0,%ebx
int $0x80
Моя идея состояла в том, чтобы использовать аккумулятор и перебирать строку , чтобы посчитать количество символов в байтах до тех пор, пока я не достигну нулевого терминатора.Но как именно это делается в ГАЗЕ?