ARM 与 x86 的主要区别是什么?

2023-12-29

我不太有兴趣了解在每个平台上开发代码时在程序员习惯做什么或他发现更容易做什么等方面的“小字”差异。我也对详细的物理差异不感兴趣核心(如果适合你的叙述,我不介意提及它们,我只是不想关注上面的内容)

我只是想知道为什么x86等CISC架构优于RISC架构,或者不是?

我的意思是,如果你可以做所有事情,并且与降低复杂性(RISC)一样好,为什么要“复杂”(CISC)

有什么是 x86 可以做而 ARM 做不到的吗?如果没有什么,那么为什么我们(历史上)费心开发 CISC 而没有专注于 RISC?

今天,ARM 似乎可以做英特尔计算机所做的一切,他们甚至拥有面向服务器的设计......

它让我的叔叔..


你正试图重新开始一场 20 年前结束的辩论。 ARM 不再是 RISC,x86 也不再是 CISC。

也就是说,CISC 的原因很简单:如果每秒可以执行 100.000 条指令,则针对给定任务需要最少指令的 CPU 将获胜。一条复杂的指令比两条简单的指令要好。

RISC 基于这样的观察:随着 CPU 变得更快,指令之间所需的时间会有很大差异。事实上,两条简单指令可能比一条复杂指令更快,尤其是当您针对简单指令优化 CPU 时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM 与 x86 的主要区别是什么? 的相关文章

  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • Linux内核页表更新

    在linux x86 中分页 每个进程都有它自己的页面目录 页表遍历从 CR3 指向的页目录开始 每个进程共享内核页目录内容 假设三个句子是正确的 假设某个进程进入内核 模式并更新他的内核页目录内容 地址映射 访问 权利等 问题 由于内核地
  • CPU寄存器和多任务处理

    我目前正在学习汇编 我很困惑 CPU 寄存器如何与多任务一起工作 所以在多任务系统中 CPU可以随时暂停某个程序的执行并运行另一个程序 那么在这一步中寄存器值是如何保存的呢 寄存器是压入堆栈还是以其他方式 CPU 寄存器如何与多任务一起工作
  • 设置 IRQ 映射

    我正在遵循一些教程和参考文献来尝试设置我的内核 我在教程中遇到了一些不熟悉的代码 但根本没有解释它 这是我被告知映射的代码16 IRQs 0 15 到 ISR 地点32 47 void irq remap void outportb 0x2
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 就 size_t 而言,“目标平台上最大可能对象的大小”是多少

    我正在阅读有关的文章size t在 C C 中http web archive org web 20081006073410 http www embedded com columns programmingpointers 2009001
  • 这种没有推送寄存器的交换有多安全?

    我对汇编非常陌生 下面的代码应该通过两个不同的函数交换两个整数 首先使用swap c然后使用swap asm 但我怀疑 我是否需要push 我的意思是保存 汇编代码之前寄存器的每个值和pop稍后 就在返回之前 main 换句话说 如果我返回
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 我们可以拥有一台只用寄存器作为内存的计算机吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 寄存器是计算机中最快的存储器 那么如果我们想构建一台只有寄存器甚至没有缓存的计算机 可能吗 我什至考虑用寄存器代替磁盘 尽管它们本质上是易
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • 为什么X86中没有NAND、NOR和XNOR指令?

    它们是您可以在计算机上执行的最简单的 指令 之一 它们是我亲自实施的第一个指令 执行 NOT AND x y 会使执行时间和依赖链长度和代码大小加倍 BMI1 引入了 andnot 这是一个有意义的补充 是一个独特的操作 为什么不是这个问题
  • 如何获取结构体中任意成员的位位置

    如何获取结构体中任意成员的位位置 在示例中 gt typedef struct BitExamStruct unsigned int v1 3 unsigned int v2 4 unsigned int v3 5 unsigned int
  • 分支预测器和分支目标缓冲区如何共存?

    我的问题是它们如何在现代 CPU 架构中共存并协同工作 你把它稍微颠倒了 每次获取时 您都会索引到分支预测器 它会告诉您刚刚收到的指令是否will be解码为已采取的分支 如果没有 则获取下一个连续地址 但是 如果您的分支预测器说它将是一个
  • 整数溢出问题

    我不断遇到整数溢出问题 我不知道如何解决它 有人可以帮忙吗 edx 包含 181 eax 包含 174 xor eax edx mov edx 2 div edx 假设你谈论的是x86 div edx这实际上没有意义 32位div将edx
  • 将字段中的位扩展到掩码中所有(重叠+相邻)集位的最快方法?

    假设我有 2 个名为 IN 和 MASK 的二进制输入 实际字段大小可能是 32 到 256 位 具体取决于用于完成任务的指令集 每次调用时两个输入都会改变 Inputs IN 1100010010010100 MASK 000111101

随机推荐

  • 从已发布的 Google 文档电子表格中删除页眉和页脚 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我找到了用于删除 Google 文档电子表格上的网格线的 JavaScript 解决方案 使用 下载为 HTML 然后在网址栏中使用 Ja
  • 如何获取具有不同命名空间的元素

    我希望获取下面 xml 的元素名称 我的请求中的问题是我想获取有效负载元素 为此我使用了这个表达 name env Payload 所以我得到这个结果环境 有效负载
  • PyInstaller 隐藏导入

    我有一个完全运行的 Python 程序 它使用以下导入 import json import requests from natsort import natsorted 但是 当我尝试使用 PyInstaller 将其编译为可执行文件时
  • 有没有办法在 Travis CI 中访问和查看 html 报告以进行 Maven 测试?

    有没有办法在 Travis CI 中访问和查看 html 报告以进行 Maven testng 测试 目前 Travis CI 日志是我查看通过 失败 跳过的测试数量等的唯一方法 像这样的事情 测试运行 34 失败 0 错误 0 跳过 0
  • QMake:使用相对路径引用库

    我有一个使用 SQLite 的 Qt 项目 所以我有以下目录结构 C Workspace MyProject MyProject pro C Workspace MyProject sqlite3 sqlite3 lib 添加带有绝对路径的
  • 隐藏 asp.net WebMethod 返回的异常的堆栈跟踪?

    我在我的 aspx 页面中使用带有属性 WebMethod 的方法 我不使用任何 asp net ajax 而是使用 jQuery 来调用这些方法并返回 JSON 中的对象 这一切都很好 接下来 我在 webMethod 内添加了授权检查
  • 随机大小的网格的纹理重复

    我需要一些关于 Three js 中纹理的帮助 我有多个块 每个块都有随机的宽度 高度 我需要对它们应用相同的纹理 但沿整个块重复 正如我从另一个答案中看到的 我可以使用以下代码设置纹理重复 lavaTexture wrapS lavaTe
  • 表单提交后标题位置未重定向

    您好 我的表单在提交后没有重定向到我的成功页面 该消息确实通过了 我确实收到了测试电子邮件 但是 我的表单在发送电子邮件后不会重定向 我正在使用标头位置来重定向 谁能帮我这个 require once class phpmailer php
  • 何时使用存储过程而不是使用任何带有编程逻辑的 ORM?

    大家好 我想知道什么时候我应该更喜欢编写存储过程而不是编写编程逻辑和使用 ORM 或其他东西提取数据 存储过程在服务器端执行 这意味着处理大量数据不需要通过网络连接传递这些数据 此外 通过存储过程 您可以构建一致的复杂业务逻辑 比如说 您每
  • 以编程方式发布表单并没有执行我的浏览器正在执行的操作。为什么?

    我正在尝试以编程方式在不属于我的网站上提交表单 我正在尝试模拟使用网络浏览器手动执行的操作 我正在使用 HTTP 库发出 HTTP POST 请求 由于我不知道 当我以编程方式提交表单时 与在网络浏览器中手动提交相比 我得到了不同的结果 错
  • 将 COMP-3 压缩十进制字段解释为数值

    我正在创建一个 SSIS 包来从一系列抄写本文件中读取解压数据 我不确定以下字段定义的正确解释 希望有人知道 FIELD NAME 1 PIC S9 15 V9 3 COMP 3 FIELD NAME 2 PIC S9 3 V9 8 COM
  • 在rails中,如何确定记录是否被依赖的: :destroy 回调销毁?

    我的 Rails 应用程序中有一条记录after destroy需要知道记录被破坏的原因的钩子 更具体地说 如果该记录由于其父记录而被级联销毁dependent destroy 它需要采取与单独销毁记录不同的方式 我想做的是看看它的父母是否
  • SQL选择连接帮助

    我在找出针对此场景的查询时遇到问题 我想在这个查询中使用两个表 它们是这样的 Units ID Other Data People ID UnitID lt fk to Units Other Data 这就是我想做的 我想选择人员表中没有
  • 构建 Qt 应用程序时出现“/usr/bin/ld: 找不到 -lGL”

    我昨天安装了 Linux Debian 然后安装了最新的 Qt 版本 今天我安装了gcc和g 但问题是 当我创建 GUI 应用程序时它不会构建和运行 每当我创建一个新项目时 选择 gui 甚至不更改任何未编译的内容 我会收到以下消息 usr
  • 将静态库链接到共享对象时,__attribute__((used)) 无效(android gcc 4.8)

    我正在将一些东西移植到 Android 并且我有几个应该链接到 so 文件中的静态库 使用 Android NDK 我尝试使用 Wl whole archive到链接器 并由适当的终止 Wl no whole archive 但出现错误 例
  • 如何通过维护其他配置在现有 Eclipse 中设置 Struts 2?

    我是一个新手程序员 正在使用阿帕奇Struts 2 http struts apache org MVC 框架 我想在现有的 Eclipse IDE 中设置 Struts 2 并且不想损害我在 Eclipse 中所做的其他不同工作 以下是我
  • java中连续重复字符的替换

    我正在研究 Twitter 数据标准化 Twitter 用户经常使用 ts I looooooove it 之类的术语来强调 爱 这个词 我想通过替换重复字符来将这些重复的字符转换为正确的英语单词 直到我得到一个正确的有意义的单词 我知道我
  • Python脚本判断一个目录是否是git仓库

    我刚刚开始使用 Python 我的第一个任务是编写一个脚本来确定它运行的目录是否是 git 存储库 一位同学建议了这段代码 usr bin env python from subprocess import Popen PIPE STDOU
  • 多处理 vs 线程 Python [重复]

    这个问题在这里已经有答案了 我正在尝试了解的优点多重处理 http docs python org library multiprocessing over 线程 http docs python org library threading
  • ARM 与 x86 的主要区别是什么?

    我不太有兴趣了解在每个平台上开发代码时在程序员习惯做什么或他发现更容易做什么等方面的 小字 差异 我也对详细的物理差异不感兴趣核心 如果适合你的叙述 我不介意提及它们 我只是不想关注上面的内容 我只是想知道为什么x86等CISC架构优于RI