小编Sk6*_*Sk6的帖子

系统调用仅读/写 1 个字节?

我是汇编新手,并试图编写一个内置的“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)

linux assembly buffer-overflow arm64

1
推荐指数
1
解决办法
207
查看次数

标签 统计

arm64 ×1

assembly ×1

buffer-overflow ×1

linux ×1