如何写入 ARM 程序集中的文件?
How do I write to files in ARM assembly?
我正在 raspberry pi 上学习 ARM 汇编,我正在尝试写入名为“user_data.txt”的文件。我确实知道如何创建一个文件,就像这样...
.data
.balign 1
file_name: .asciz "user_data.txt"
.text
.global _start
_start:
MOV R7, #8
LDR R0, =file_name
MOV R1, #0777
SWI 0
_end:
MOV R7, #1
SWI #0
...但是,正如我所说,我不知道如何写入此文件。我看过其他教程,但我看过的 none 解释了每一行的作用。我知道我会将 4 移动到 R7 中,以便调用 sys_write 系统调用,但我如何告诉 ARM 我要写入的文件名?
任何人都可以提供一些代码来清楚地显示和解释一些写入文件的 ARM 吗?
谢谢,
- primecubed
所以你想要代码:
.data
.balign 1
file_name: .asciz "user_data.txt"
.text
.global _start
_start:
MOV R7, #8
LDR R0, =file_name
MOV R1, #0777
SWI 0
MOV R7, #4 ;write(int fd, void* buf, int len)
LDR R1, =file_name ;buf
MOV R2, #9 ;len
SWI 0
MOV R7, #6 ;close(int fd)
SWI 0
_end:
MOV R7, #1
SWI #0
这将(为简单起见)将 file_name (user_data) 的 9 个字符写入文件并关闭它。请注意,R0 始终持有 fd.
联机帮助页 (https://linux.die.net/man/2/creat, https://linux.die.net/man/2/write) and this table (https://syscalls.w3challs.com/?arch=arm_thumb) 是我经常查阅的有用资源。
我正在 raspberry pi 上学习 ARM 汇编,我正在尝试写入名为“user_data.txt”的文件。我确实知道如何创建一个文件,就像这样...
.data
.balign 1
file_name: .asciz "user_data.txt"
.text
.global _start
_start:
MOV R7, #8
LDR R0, =file_name
MOV R1, #0777
SWI 0
_end:
MOV R7, #1
SWI #0
...但是,正如我所说,我不知道如何写入此文件。我看过其他教程,但我看过的 none 解释了每一行的作用。我知道我会将 4 移动到 R7 中,以便调用 sys_write 系统调用,但我如何告诉 ARM 我要写入的文件名?
任何人都可以提供一些代码来清楚地显示和解释一些写入文件的 ARM 吗?
谢谢,
- primecubed
所以你想要代码:
.data
.balign 1
file_name: .asciz "user_data.txt"
.text
.global _start
_start:
MOV R7, #8
LDR R0, =file_name
MOV R1, #0777
SWI 0
MOV R7, #4 ;write(int fd, void* buf, int len)
LDR R1, =file_name ;buf
MOV R2, #9 ;len
SWI 0
MOV R7, #6 ;close(int fd)
SWI 0
_end:
MOV R7, #1
SWI #0
这将(为简单起见)将 file_name (user_data) 的 9 个字符写入文件并关闭它。请注意,R0 始终持有 fd.
联机帮助页 (https://linux.die.net/man/2/creat, https://linux.die.net/man/2/write) and this table (https://syscalls.w3challs.com/?arch=arm_thumb) 是我经常查阅的有用资源。