MIPS 装配标签

2023-11-29

MIPS 的组件会读取每个标签吗?忽略任务和语法,我只是快速地将一些东西放在一起。

add reg3, reg1, $zero
add reg1, reg1, reg2
beq reg1, reg3, BRANCH1      #reg2 contents are zero
bne reg1, $zero, BRANCH2     #reg1 doesn't equal zero
BRANCH1: add returnReg, reg1, $zero
BRANCH2: add returnReg, reg2, $zero
jr returnAddress

这会逐行读取,包括标签,除非它们被跳过?例如,除非 reg1 的内容等于 0,否则 BRANCH1 每次都会执行吗?

来自维基:标签可以让你的生活变得简单。当您引用程序的一部分时,您不必计算行数,只需给它一个名称即可您可以在循环、跳转和变量名称中使用它。 标签不会出现在您的最终代码中,它们只是为了方便而出现,这是您从典型的 MIPS 汇编器中获得的少数好处之一。它还使汇编程序的工作变得轻松,因为它现在可以轻松地重新定位和链接代码。如果您不知道这些是什么,请不要担心,稍后会介绍。

由此看来,我认为标签只不过是一个行参考。这意味着跳过代码(使用 bne、beq、jr、j 等)是防止读取特定行上的指令的唯一方法。这是正确的想法吗?


标签只是为了让您可以通过跳转引用该行。 CPU本身只能看到机器码。代码中的任何注释也是如此。它们仅存在于汇编器中 - 然后将其转换为机器代码。

如果您不希望它执行,则需要跳过一行。

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

MIPS 装配标签 的相关文章

  • 如何将 x86 GCC 风格的 C 内联汇编转换为 Rust 内联汇编?

    我在 C 中有以下内联汇编 unsigned long long result asm volatile byte 15 byte 49 shlq 32 rdx orq rdx rax a result rdx return result
  • AVX-512 指令编码 - {er} 含义

    在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
  • 计算数字的二进制表示形式中 1 的数量的最佳方法。 (MIPS)

    我需要计算二进制数中 1 的数量 比如说 5 所以 00001001 将是 2 或 n 2 我正在使用 MIPS 最好的方法来做到这一点 最好的方法是count them 您可以检查是否设置了最低有效位 a1 by and用一个来代替它 如
  • 设置 IRQ 映射

    我正在遵循一些教程和参考文献来尝试设置我的内核 我在教程中遇到了一些不熟悉的代码 但根本没有解释它 这是我被告知映射的代码16 IRQs 0 15 到 ISR 地点32 47 void irq remap void outportb 0x2
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • GCC的sqrt()编译后如何工作?使用哪种root方法?牛顿-拉夫森?

    只是对标准感到好奇sqrt 来自 GCC 上的 math h 我自己编码的sqrt 使用牛顿拉夫森来做到这一点 是的 我知道 fsqrt 但CPU是如何做到这一点的呢 我无法调试硬件 现代 CPU 中的典型 div sqrt 硬件使用 2
  • 是否可以在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
  • 高效memcspn

    有谁知道 memcspn 函数的有效实现吗 它的行为应该类似于 strcspn 但在内存缓冲区中查找跨度 而不是在以 null 结尾的字符串中查找跨度 目标编译器是 VisualC 谢谢 卢卡 一种近乎最佳的实现 size t memcsp
  • NASM 中的 equ 和 db 有什么区别?

    len equ 2 len db 2 它们是否相同 产生可以用来代替的标签2 如果不是 那么每种申报表的优点或缺点是什么 它们可以互换使用吗 第一个是equate 与 C 类似 define len 2 因为它实际上并没有在最终代码中分配任
  • 何时可以重用avx指令中的源寄存器

    在 avx 指令中用作源的寄存器何时可以在指令开始处理后重用 例如 我想使用vgatherdps该指令消耗两个 ymm 寄存器 其中之一是位移索引 我意识到vgatherdps由于数据的局部性较差 因此需要花费大量时间来收集 位移索引寄存器
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • 无法识别的仿真模式:MinGW32 上的 elf_i386

    我正在尝试制作内核 但无法链接C与程序集一起输出 这ld 我收到错误 无法识别的仿真模式 elf i386 我正在使用 Windows 10 专业版以及 MinGW32 和 MSYS 我正在使用的代码 link ld link ld OUT
  • 使用 Gas 生成与位置无关的代码 (-fPIC)

    我尝试在 x86 64 上创建共享库但失败 问题归结为以下代码 请不要介意 它没有多大意义 section data newline ascii n section text globl write newline type write n
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • 一个地址有多少字节? [复制]

    这个问题在这里已经有答案了 在64位机器上 我们知道一个地址是8个字节 然而 我并不完全清楚一个地址中有多少字节的信息 虚拟内存中的每个字节都有一个地址吗 或者内存中的每 64 位都有一个地址 还是取决于架构 如果这取决于架构 那么我应该如
  • Polygot 包含 nasm/yasm 和 C 的文件

    我有一堆幻数 我想将它们包含在由 nasm 或 yasm 编译的 C 程序和汇编文件中 在纯 C 语言中 该文件看起来像是一系列定义 例如 define BLESS 55378008 define ANSWER 42 在 nasm 或 ya
  • 从 DX:AX 寄存器转移到单个 32 位寄存器

    我在添加 16 位乘法的乘积时遇到问题 我想将一年 例如 2015 年 乘以 365 为此 我 mov dx 0 to clear the register mov ax cx cx holds the year such as 2015
  • 在 qemu 中将扇区加载到 RAM

    我编写了一个简单的程序 将扇区 扇区编号 2 加载到 RAM 但什么也没打印 首先 我尝试了以下引导扇区代码 org 0x7c00 mov ax 0x1000 ES BX 1000 0000 mov es ax mov bx 0x00 Lo
  • 测试 xmm/ymm 寄存器是否为零的更快方法?

    It s fortunate that PTEST does not affect the carry flag but only sets the rather awkward ZF also affects both CF and ZF
  • 将代码保存在 L1 缓存中

    我一直在阅读维基百科关于 K 编程语言的文章 http en wikipedia org wiki K programming language Performance characteristics这就是我所看到的 解释器的小尺寸和语言的

随机推荐

  • SQL查询优化建议产品

    我现在将尝试更好地解释以下问题和查询的目的是什么 假设我们正在讨论电子商务环境和数据库 除其他表外 我们还有三个表 产品 订单和订单数据 ORDERS 表将处理所有已下订单 还有一个子表 我们将其称为 ORDERS DATA 将存储订单中记
  • 将私钥关联到 PFXExportCertStoreEx 的证书

    我正在尝试将证书导出到 pfx 文件 这就是我所做的 简化 h CertOpenStore CERT STORE PROV MEMORY 0 NULL CERT STORE CREATE NEW FLAG NULL p CertCreate
  • 如何为实时系统实现 Python Gekko 应用程序? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想将 Python Gekko 应用程序连接到实时系统 对于控制器的每个 周期 有三个步骤 从测量设备读取当前值 Python 应用程序根据测量结
  • 关于在 php 中连接数据库的错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在这样做我的代码 con mysqli connect localhost root root floralsupply 并就此line浏览器是giving我这个erro
  • 如何在.Net Core 3.1中创建的WCF服务中读取/解析soap标头请求

    我创建了一个 poc WCF 服务 并且可以使用 SOAP UI 或 Postman 调用该服务 但对于某些项目工作 我需要解析下面的肥皂安全标头 SOAP 头
  • 如何在VB.net中引用当前Windows用户的视频文件夹路径

    我正在寻找一种方法来引用 VB NET 中当前用户的 MyVideos 文件夹 我的目标是使用这个参考来设置InitialDirectory我的财产OpenFileDialog目的 像这样的东西 OpenFileDialog1 Initia
  • 从数字数组中获取最小值或最大值的最佳方法是什么?

    假设我有一个数字数组 2 3 3 4 2 2 5 6 7 2 查找该数组中的最小值或最大值的最佳方法是什么 现在 为了获得最大值 我正在循环数组 如果变量大于现有值 则将变量重置为该值 var myArray Array of Number
  • 当 Google 地图全屏为 true 时,Google 地图自动完成下拉菜单会隐藏

    我已经实现了谷歌地图 并在地图上覆盖了自动完成功能 并将 FullScreenControl 选项设置为 true 您可以在下图中右侧看到 FullScreenControl 我的问题是 当我通过单击 FullScreenControl 切
  • 从 PDFBox 中剥离时的文本坐标

    我正在尝试使用 PDFBox 从 pdf 文件中提取带有坐标的文本 我混合了在互联网上找到的一些方法 信息 也是stackoverflow 但是我的坐标问题似乎不正确 例如 当我尝试使用坐标在 tex 顶部绘制矩形时 该矩形会在其他地方绘制
  • 如何获取 JAXB 输出以将名称空间包含在没有前缀的子节点中?

    天知道我在论坛上搜索了答案 但没有看到任何答案 这是我的 JAXB 代码读取的简化 XML 涉及2个命名空间 xyz 和 abc 这两个是在两个不同的模式文件中定义的 xjc 为它们生成两个不同的包 以下文件可以很好地读入这些类 甚至可以写
  • 如何解压缩 AES-256 加密的 Zip 文件?

    我正在寻找一个在iPhone应用程序中使用的压缩库 支持解压缩AES 256 位内置档案Winzip压缩实用程序 Thanks zlib 是 iPhone sdk 的一部分 是一个成熟且免费的选项 如果您使用 Xcode 您可以通过以下方式
  • python 3 urllib 和 http.client - 无法打开调试消息

    您好 Stackoverflow 社区 我正在尝试熟悉 urllib request 标准库 并在工作脚本中使用它而不是 wget 然而 我无法在 IDLE 中 使用脚本文件或手动在 cmd py 中键入命令来获取显示的详细 HTTP 消息
  • Vuetify 组合框未更新为正确的值

    我有一个 Vuetify 组合框 在保存时会执行 api 调用来存储所选或输入的值 但是 在更新此值时 如果直接单击保存按钮而没有取消选择组合框 则会再次存储先前存储的值 而不是新值 仅当我手动取消选择该框或按 Enter 时 才会存储正确
  • Firebase:事务读取和更新多个文档

    使用此代码 我可以读取和更新事务中的单个文档 Update likes in post var docRef admin firestore collection posts doc doc id let post await admin
  • pyspark 将行转换为带有 null 的 json

    Goal 对于具有模式的数据框 id string Cold string Medium string Hot string IsNull string annual sales c string average check c strin
  • 如何在clip()之后在canvas中执行clearRect()?

    我需要在画布中执行clip 后执行clearRect 不幸的是 它对我不起作用 如果我排除 Clip 的意思 则clearRect 工作得很好 我需要在执行clip 后执行clearRect 这可能吗 请找到fidd
  • Scrum:任务依赖性和架构设计任务[关闭]

    Closed 这个问题是无关 目前不接受答案 我有一些 Scrum 问题 任务依赖性 我读过的大多数书籍似乎都将任务视为彼此独立的 一个程序员的任务不会影响另一个程序员的任务 因此可以并行运行 如何处理依赖于另一项任务的任务 任务基于故事
  • UIImagePickerControllerDelegate 未正确响应

    我在 iPhone 3Gs 上使用 iOS 4 2 1 中的 UIImagePickerController 我之前使用过已弃用的方法 void imagePickerController didFinishPickingImage edi
  • 使用事件处理程序更改背景颜色

    我正在尝试创建一个简单的表单 其中将三个 div 堆叠在一起 单击每个框时 它们的颜色需要更改 一红 一绿 一蓝 我只需要使用一个事件处理程序来完成此操作 我被我的代码困住了 我希望你们中的一位能指导我完成这个任务 我真的很感激 这是我的代
  • MIPS 装配标签

    MIPS 的组件会读取每个标签吗 忽略任务和语法 我只是快速地将一些东西放在一起 add reg3 reg1 zero add reg1 reg1 reg2 beq reg1 reg3 BRANCH1 reg2 contents are z