如何写入 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 吗?

谢谢,

所以你想要代码:

.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) 是我经常查阅的有用资源。