Итак, я учусь использовать ассемблер и написал простую функцию _getInput, как показано ниже:
_getInput:
movq $0, %rax
movq $0, %rdi
subq $8, %rsp
leaq -8(%rsp), %rsi
movq $8, %rdx
addq $8, %rsp
syscall
ret
Затем у меня есть функция _start, которая вызывает ее и сохраняет введенный ввод в% r8, напримеритак:
_start:
call _getInput
movq (%rsi), %r8
Я проследил это в GDB, чтобы увидеть значения регистров и задать несколько вопросов.Во-первых, после того, как я ввожу ввод и нажимаю ввод,% rsi имеет значение 140737488347624. Когда я затем запускаю следующую строку для копирования в% r8, значение% r8 равно 2609. Может кто-нибудь объяснить, что именно происходит и гдеэти значения берутся?Я ожидал, что значение будет 49 (представление ASCII 1), хотя, возможно, символ новой строки усложняет это?Спасибо!