我是汇编新手,并试图编写一个内置的“echo”版本,但一次只能对 1 个字节进行操作。
我有以下按我想要的方式工作的方法,除了它在读取和写入时溢出超过 1 个字节,即使我在两个系统调用中都明确表示 x2 中的 1 个字节。我究竟做错了什么?
示例运行:
sh-4.2$ ./echo1b
f
f
o
o
b
b
bar
bar
bazbazbaz
bazbazbaz
q
sh-4.2$
Run Code Online (Sandbox Code Playgroud)
这是代码:
.data
temp: .byte 1
.text
.globl _start
_start:
/* read one byte from stdin, store to temp */
mov x0, #0x0
adr x1, temp
mov x2, #0x1
mov x8, #0x3F
svc #0x0
/* write newline to stdout */
mov x0, #0x1
mov x1, #0xA
mov x2, #0x1
mov x8, #0x40
svc #0x0
/* if …Run Code Online (Sandbox Code Playgroud)