关于x86与ARM系统调用的问题

系统调用是一种接口,存在于应用程序和系统内核之间,运行系统调用使得应用程序自陷于内核当中(自陷这个词好,说明了一种内核接管机制)。

是这样的没错,x86和ARM主要的区别仅仅在于指令上,或者说寄存器存在差异也可(次要),为什么提到这两种架构对于系统调用的区别呢?

首先从指令层面来分析:linux系统调用封装在c的库文件中,过程就是首先调用库函数,库函数里有系统调用,现在已经从用户模式转变成系统模式。通过反汇编可以看到,高级语言写的函数调用内部的系统调用已经汇编成指令:INT 0x80 这是典型的x86指令,如果在ARM系统中则被翻译成SWI 0x000...两条指令都是中断跳转。

与此同时,这里有个参数及系统调用号的细节:x86里系统调用号由esx传递,参数由寄存器传递,ARM中系统调用号是SWI的操作数,参数在寄存器r0~r4中。

在程序地址方面,x86处理器在系统调用列表中找到系统调用号,进行执行。ARM则是转入同一个地址0x80,开始执行指令,对自陷处只有这一个总的入口,SWI的操作数决定跳转地址,也就是调用号。

时间: 2024-10-12 19:57:28

关于x86与ARM系统调用的问题的相关文章

处理器架构——从RISC与CISC到x86、ARM、MIPS

1.CISC(Complex Instruction SetComputer,复杂指令集计算机) 复杂指令集(CISC,Complex Instruction Set Computer)是一种微处理器指令集架构(ISA),每个指令可执行若干低阶操作,诸如从内存读取.储存.和计算操作,全部集于单一指令之中. CISC特点: 1.指令系统庞大,指令功能复杂,指令格式.寻址方式多: 2.绝大多数指令需多个机器周期完成: 3.各种指令都可访问存储器: 4.采用微程序控制: 5.有专用寄存器,少量: 6.

Android arm64(aarch64)中的so注入(inject) - 兼容x86 and arm

实现Android arm64(aarch64)中的so注入(inject) ,并且兼容x86和arm.如果没有搞错,这是国内外第一份公开的arm64注入的针对性完整资料-- 代码基于 ariesjzj 的 <Android中的so注入(inject)和挂钩(hook) - For both x86 and arm>,增加了对arm64的支持.(目前已经开始有64位安卓手机) 同样,代码由jni中以下三个文件构成. inject.c Android.mk Application.mk 其中An

Linux系统下x86和ARM的区别有哪些?

问题: 最近在用三星的一款i5处理器的Windows平板,和iPad,以及其他使用ARM处理器的手机相比,发热量大很多,甚至需要借助风扇来散热,耗电量也大了不少. 那么就很奇怪,在主频相差不大,并且实际执行效果差不多的情况下,x86架构的处理器的发热量和功耗为什么会那么大?这种差异到底是硬件以及处理器的指令集本身的问题,还是软件层面的问题? 回答1: 说x86和ARM处理器"实际执行效果差不多"其实有所不妥.楼主也说了比较的几个设备主要是windows平板,ipad和智能手机.这些平台

X86 和 ARM架构对比

中央处理单元(CPU): 主要由运算器.控制器.寄存器三部分组成.运算器就是起着运算的作用,控制器就是负责发出CPU每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度. CPU有着处理指令.执行操作.控制时间.处理数据四大作用.移动设备很复杂, CPU需要执行数以百万计的指示,才能使它向期待的方向运行,而CPU的速度和功率效率是至关重要的.速度影响用户体验,而效率影响电池寿命.最完美的移动设备是高性能和低功耗相结合. CPU架构 从CPU发明到现在,有非常多种

CPU两大架构X86 和 ARM

中央处理单元(CPU): 主要由运算器.控制器.寄存器三部分组成.运算器就是起着运算的作用,控制器就是负责发出CPU每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度. CPU有着处理指令.执行操作.控制时间.处理数据四大作用.移动设备很复杂, CPU需要执行数以百万计的指示,才能使它向期待的方向运行,而CPU的速度和功率效率是至关重要的.速度影响用户体验,而效率影响电池寿命.最完美的移动设备是高性能和低功耗相结合. CPU架构 从CPU发明到现在,有非常多种

x86、ARM和MIPS

指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分,代表架构分别是x86(CISC).ARM和MIPS(RISC).   ARM-RISC是为了提高处理器运行速度而设计的芯片体系,它的关键技术在于流水线操作即在一个时钟周期里完成多条指令.相较复杂指令集CISC而言,以RISC为架构体系的ARM指令集的指令格式统一.种类少.寻址方式少,简单的指令意味着相应硬件线路可以尽量做到最佳化,从而提高执行速率.因为指令集的精简,所以许多工作必须组合简单的指令,而针对复杂组合的工作便需要由编译程

Ubuntu下安装Qt4.5(包括X86和ARM版本)

条件:TQ2440开发板,虚拟机安装的Ubuntu10.04,安装好天嵌自带的GCC交叉编译器参考:http://blog.csdn.net/newnewman80/article/details/6286271 一.安装qt-opensource        1.解压qt-x11-opensource-src-4.5.3.tar.gz到相关目录        2.进入相关目录,执行# ./configure ,之后选择o,提示错误Basic XLib function test failed

opencv在arm和x86上的移植

一.开发环境 操作系统:fedora14 Opencv版本:2.0 Qt版本:4.7 arm:mini6410 交叉编译工具:arm-linux-gcc-4.5.1 二.安装与配置 Linux系统的安装,交叉Qt-creator的安装还有交叉编译工具的安装,网上说的基本都没什么问题,测试后都可以用.这里安装Qt-Creator遇到了一点小问题,按照网上的和mini6410开发手册上的安装方法太复杂了,用QtSdk-offline-linux-x86-v1.2.1.run安装方便又准确. 这篇文章

ARM(RISC)和x86(CISC)的技术差异

RISC和CISC,这一对冤家,从诞生之日开始就处在不停的纠缠之中.直到今天,两者经过多年的发展后,都在各自领域打开了一片天地,并且相互渗透.RISC专注高性能.高性能功耗比.小体积以及移动设备领域,CISC专注桌面.高性能和民用市场.现在,RISC的代表是ARM,而CISC的代表则是我们耳熟能详的x86.那么,他们的技术差异在哪里?究竟是怎样的技术分歧带来了两者如此大的差别呢? 指令集的出现 要说清楚RISC和CISC,也就是今天热门的ARM和x86之间的差异,还得把时间往前推一些,观察计算机