80286:乘以 10 最快的方法是什么?

2023-12-02

要将一个数字乘以 2 的任意倍数,我将对其进行多次移位。

有没有这样的技术可以在更少的周期内将一个数字乘以 10?


80286 没有随 80386 一起引入的桶形移位器。根据 Microsoft Macro Assembler 5.0 文档 (1987) 中的时序表,SHL 注册,immed8需要 5+n 个周期,而SHL reg, 1需要2个周期。ADD reg, reg需要 2 个周期,同样MOV reg, reg. IMUL reg16,即时需要21个周期。因此,乘以 10 的最快方法似乎是:

           ;       // cycles
shl ax, 1  ; *2    // 2
mov bx, ax ; *2    // 4
shl ax, 1  ; *4    // 6
shl ax, 1  ; *8    // 8
add ax, bx ; *10   // 10

或者,或者:

           ;      // cycles
mov bx, ax ; *1   // 2
shl ax, 1  ; *2   // 4
shl ax, 1  ; *4   // 6
add ax, bx ; *5   // 8
shl ax, 1  ; *10  // 10

十个循环,无论哪种方式。

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

80286:乘以 10 最快的方法是什么? 的相关文章

  • 这个反斜杠在这段汇编代码中起什么作用?

    我不确定这些推线有什么区别 修剪下来来自 Linux 的 x86 entry calling h https github com torvalds linux blob 241e39004581475b2802cd63c111fec43b
  • 为什么 FMA _mm256_fmadd_pd() 内在函数有 3 个 asm 助记符:“vfmadd132pd”、“231”和“213”?

    有人可以向我解释一下为什么融合乘法累加指令有 3 种变体 vfmadd132pd vfmadd231pd and vfmadd213pd 而只有一个 C 内在函数 mm256 fmadd pd 为了简单起见 在 AT T 语法中 有什么区别
  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m
  • 在 x86 程序集中存储大量布尔值的最佳方法是什么?

    最近我一直在处理充满布尔值的大型数组 目前 我将它们存储在 bss部分有一个 space指令 它允许我创建字节数组 但是 由于我只需要存储布尔值 因此我希望从数组中逐位读取和写入数据 目前 我能想到的最好方法是有一个 space指令所需存储
  • 错误 LNK2019:函数 main 中引用的外部符号无法解析

    我正在尝试在 C 中运行我的简单汇编代码 我只有两个文件 cpp 文件和 asm 文件 编译时出现错误 见下文 如果有人可以提供帮助 我将不胜感激 这是我的 main cpp 文件 include
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • Intel:序列化指令和分支预测

    英特尔架构开发人员手册 http www intel com content www us en architecture and technology 64 ia 32 architectures software developer v
  • IDA pro asm 指令更改

    我只是想知道我怎样才能 更改IDA视图A中的asm指令 如何编辑指令 对于 实例 jnz 到 jmp 如何插入新指令 call func1 调用 func2 插入到现有的 代码 我知道如何制作 diff 文件 我知道如何在我的 DLL 上应
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • Polygot 包含 nasm/yasm 和 C 的文件

    我有一堆幻数 我想将它们包含在由 nasm 或 yasm 编译的 C 程序和汇编文件中 在纯 C 语言中 该文件看起来像是一系列定义 例如 define BLESS 55378008 define ANSWER 42 在 nasm 或 ya
  • 学习 (N)ASM 的最佳资源是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想学习汇编已经有一段时间了 尽管我之前尝试过几次 但我还没有真正能够超越 Hello world 有
  • 从 DX:AX 寄存器转移到单个 32 位寄存器

    我在添加 16 位乘法的乘积时遇到问题 我想将一年 例如 2015 年 乘以 365 为此 我 mov dx 0 to clear the register mov ax cx cx holds the year such as 2015
  • 16 位模式下的操作数大小前缀

    我试图理解 GAS 的行为 code16 从手册上看 在16位部分 对于32位操作数或指令 会产生66H操作数覆盖前缀用于指令编码 这是否意味着 code16 movw eax ebx 这种模式合法吗 那么代码不能在16位处理器上运行吗 这
  • 68000 汇编语言 - CMPI.B

    What are the contents of the CCR and D3 after the following instructions sequence executes Perform the calculation by ha
  • 使用 ACPI 在 MS-DOS 中关闭计算机

    我在基于 Pentium 的计算机上运行 MS DOS 6 22 主板支持 ACPI 并且想知道是否有一个可以用来关闭计算机的汇编语言例程 或者它是否比那个更难 即主板 具体的 基本上 我想创建一个小程序来从命令行关闭计算机 这是专门为此编
  • x86 程序集 Pushl/popl 不适用于“错误:后缀或操作数无效”

    我是汇编编程的新手 正在努力解决编程基础 http savannah nongnu org projects pgubook 在带有 GNU 汇编器 v2 20 1 的 Ubuntu x86 64 桌面上 我已经能够汇编 链接执行我的代码
  • movsbl指令的作用是什么? [复制]

    这个问题在这里已经有答案了 我在网上搜索过 但找不到明确的示例来理解该指令的作用 因此 如果有人可以举一个例子 这对我来说将会非常有帮助 用符号从字节扩展到长字移动 在Intel语法中 该指令的助记符是MOVSX 当变量类型为 C 时 C
  • 如何在汇编中使用 ReadString?

    mov edx offset Prompt1 call WriteString mov ecx 32 mov edx offset String1 call ReadString 现在 我该如何访问String1 如何将其移入寄存器以便对其
  • 为什么这个函数在额外读取内存时运行速度如此之快?

    我目前正在尝试了解 x86 64 上某些循环的性能属性 特别是我的 Intel R Core TM i3 8145U CPU 2 10GHz 处理器 具体来说 在循环体内添加一条额外的指令来读取内存几乎可以使性能提高一倍 而细节并不是特别重

随机推荐

  • 程序从哪里分配内存?

    作为一名 C 和 C 程序员 我使用过malloc and new来分配内存 我只是想知道 操作系统如何分配内存 它是从 RAM 硬盘还是其他地方分配 我可以从硬盘借用内存以防万一吗 它实际上比你想象的要复杂得多 操作系统以 页面 的形式考
  • 如何在recycler视图中访问MainActivity的组件来制作onclick监听器?

    我创建了类似 YouTube 的应用程序 其中包含一个视频视图 顶部 和回收器视图 视频视图下方 我陷入困境 我想在 recyclerview 项目上创建 onclicklistner 并更改视频路径来更改视频 但是如何访问适配器类中的 v
  • PHP 中的 SFTP - 未定义的常量 CURLOPT_PROTOCOLS 和 CURLPROTO_SFTP?

    从我的 php 脚本中 我需要能够通过 sftp 将 csv 文件上传到远程服务器 我遵循了这个问题的公认答案 从 PHP 内部进行 SFTP 这是我的代码的样子
  • 使用公式将 Excel 子集列转换为数组

    我需要将帐号放入一个数组中 该数组在列选择上指示为 1 预期结果是 FD 002 17 FD 004 17 我计划在名称范围中使用它 子集感兴趣的表 我尝试使用 INDEX B2 B6 MATCH 1 A2 A6 1 但这失败了Match不
  • openFileInput() 和/或 openFileOutput() I/O 流默默失败

    我一直在研究 android 平台 研究不同的数据存储方式 现在我正在使用Context方法openFileInput and openFileOutput 正如这两种方法的文档告诉我的那样 我创建了一个名为 default 的文件 这是一
  • 几分钟后服务自动停止

    我正在创建一个服务 当活动处于后台以及整个应用程序被销毁时 该服务应该可以工作 我每隔 1 分钟调用一次服务中的位置坐标 但是 当我尝试这样做时 该服务会在 12 15 分钟后自动关闭 我希望该服务能够无休止地工作 直到并且除非它被用户交互
  • 定制系列化

    我有一些必须序列化的对象 class Displayable string name Sprite icon The icon字段需要自定义序列化 因为Sprites 已经被序列化 在不同的文件中 具有自己的格式 由游戏引擎 我只需要存储一
  • Jquery - 在悬停时添加类

    我想要当鼠标继续运行时lijquery 向元素添加一个类 ul class menu li Menu Item li li Menu Item li li Menu Item li li Menu Item li ul
  • Galaxy Note 5:自动降低密度

    我创建了一个依赖某些屏幕指标来运行的应用程序 它在除 Galaxy Note 5 之外的所有设备上都能正常工作 在 Note 5 上 它报告的屏幕尺寸为 1080x1920 而实际屏幕尺寸为 1440x2560 我还在 logcat 中看到
  • 使用泛型返回文字字符串或来自 Dictionary

    我想这一次我超越了自己 请随意编辑标题 我也想不出一个好的标题 我正在从一个文件中读取内容 然后该文件中将包含一个字符串 因为它就像一个 xml 文件 但文件中将是一个文字值或一个 命令 用于从 workContainer 获取值 so
  • 为什么这个巴特沃斯滤波器在 R 和 Matlab 中呈现不同的结果?

    我试图对 R 中的数据使用 20Hz 低通滤波器 但是当我使用 filtfilt 函数时 该图与 matlab 中的不同 我在 R 中使用以下代码 fc lt 20 fs lt 100 Wn lt pi fc 2 fs testar lt
  • 如何根据滚动位置缩小图像宽度

    我正在寻找基于滚动缩小徽标 到目前为止 我有这样的事情 logoSize function var headerOffset window height 650 var maxScrollDistance 1300 window scrol
  • 多租户Asp.net Core网站中基于参数的JWT认证

    我在 net core 2 1 网站中使用基于 JWT 的身份验证 目前这工作正常 现在 我必须创建一个 API 多租户 并且每个租户都将拥有自己的密钥 租户 ID 将作为参数传递给 API Authorize HttpGet tenant
  • 每次更改选项卡时选项卡片段都会获取数据

    活动配置文件 xml
  • 使用替换值的平面数组替换二维数组中的列值

    我有一个这种格式的二维数组 oldArr 0 gt color gt red shape gt circle size gt small 1 gt color gt green shape gt square size gt large 2
  • 使用 ncurses 创建一个函数来检查 Unix 中的按键情况

    我一直在寻找相当于kbhit 我读过几个关于这个主题的论坛 大多数似乎都建议使用 ncurses 我应该如何使用 ncurses 检查 C 中是否按下了某个键 功能getch ncurses 提供从窗口读取一个字符 我想写一个函数 只检查是
  • Laravel dusk 断言 404 错误

    我正在尝试使用 laravel dusk 来测试 404 未找到错误 特别是在加载图像时 阅读 laravel dusk 文档后 我发现没有断言可以帮助我测试是否发生 404 异常 有没有一种好的方法可以通过浏览器测试来了解资源是否加载失败
  • CSS、JS 和图像无法以漂亮的 url 显示

    我正在尝试通过 htaccess 文件重写 URL 以便以下 URL www domain com subfolder index php key 可以通过以下方式访问 www domain com subfolder index php
  • YouTube C# API V3,如何恢复中断的上传?

    我不知道如何在 C YouTube API V3 中恢复中断的上传 我现有的代码使用 V1 并且工作正常 但我正在切换到 V3 如果我调用 UploadAsync 而不更改任何内容 它将从头开始 使用 Fiddler 我可以看到此处给出的协
  • 80286:乘以 10 最快的方法是什么?

    要将一个数字乘以 2 的任意倍数 我将对其进行多次移位 有没有这样的技术可以在更少的周期内将一个数字乘以 10 80286 没有随 80386 一起引入的桶形移位器 根据 Microsoft Macro Assembler 5 0 文档 1