我正在 Linux ARM 和 FreeBSD ARM 中进行一些汇编编程。我有一些关于 ARM 管道和汇编编程的问题......
Q1。假设有ARM汇编指令(ARM模式)如
add r0, pc, #0
mov r1, #1
mov r1, #2
mov r1, #3
mov r1, #4
当这些被执行时,r0 的值是多少?为什么?
Q2。假设有手臂组装说明,例如
sub r0, r0, r0
sub r1, r1, r1
svc #?(a system call which never returns such as execve)
mov r2, #1
mov r3, #1
假设svc
永远不会返回,是否mov r2, #1
执行?(因为流水线执行...?)
Q3。Q1、Q2 的结果在 Thumb 模式下是否相同?或不?为什么?
Q4,在 FreeBSD 中,Thumb 模式的 svc 编号是否与 ARM 模式不同?
svc $0x3b
(execve) 在 ARM 模式下工作正常,但在 Thumb 模式下不起作用。例如:
mov r7, $0x3b
svc 1
这告诉我“错误的系统调用”