gpt4 book ai didi

c - 没有数据部分的 ARM 程序集中的 Hello World

转载 作者:行者123 更新时间:2023-12-02 01:13:26 25 4
gpt4 key购买 nike

我有一个“你好,世界!” ARM 汇编语言程序,我想将其转换为 shell 代码以在内存区域中执行它。在英特尔汇编语言中,我去掉了 .data 部分,因为在转换为 shell 代码时只使用了 .text 部分。 ( See here )

现在我正在努力用 ARM 汇编语言做同样的事情。基础是以下代码:

ARM 汇编 Hello World

.global _start

_start:
mov r7, #4
mov r0, #1
ldr r1,=string
mov r2, #12
swi 0
mov r7, #1
swi 0

.data
string:
.ascii "Hello, World"

修改 ARM 程序集 Hello World 以省略 .data 部分
.global _start
.global mymessage

mymessage:
mov r7, #4
mov r0, #1
pop {r1}
mov r2, #12
swi 0
mov r7, #1
swi 0

_start:
bl mymessage
.ascii "Hello, World"

但这不起作用,因为这显然是“非法指令”。有任何想法吗?

最佳答案

ARM 已经有了相对于 PC 的寻址,无论如何,bl不会将返回地址压入堆栈。

这有效:

.global _start

_start:
mov r7, #4
mov r0, #1
adr r1, string
mov r2, #12
swi 0
mov r7, #1
swi 0

string:
.ascii "Hello, World"

关于c - 没有数据部分的 ARM 程序集中的 Hello World,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43890583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com