assembly - 如何将这段代码改为ARM汇编指令?

标签 assembly arm

如何将此代码更改为 ARM 汇编指令? 我想在android内核中运行这段代码。但我不知道如何使用ARM汇编指令。

#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
type name(type1 arg1,type2 arg2,type3 arg3) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
       : "=a" (__res) \
       : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
                "d" ((long)(arg3))); \
__syscall_return(type,__res); \
}

非常感谢。

最佳答案

在 ARM 上您需要的是“软件中断”指令,它大致相当于 x86 上的“int”:

swi 0  ;  0 is the interrupt vector for "syscall"

您可以在此处获取概述:OSDev Wiki on ARM

ARM/Android 的“hello, world”可以在 post 中找到。

关于assembly - 如何将这段代码改为ARM汇编指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786225/

相关文章:

c - FRDM K82f uart 中断仅触发约 8 次

architecture - 了解分支预测

c - 读取一个 32 位整数的第 31 位的值

c - 多核:LPC43xx 系列:Cortex M0 时钟

assembly - ARM,带链接的分支,BL 与 MOV,B

将 C 代码编译为 MIPS 程序集

assembly - 为什么第二次调用打印函数后输出错误? (x86 组件)

assembly - 为什么他们在 x86-64 中使用数字作为寄存器名称?

c - 反汇编 C 代码

C程序不断向串口发送相同的数据