简单 mips 中的无限循环

2024-03-18

我正在尝试了解 $ra,所以我想要的输出是 "mainfunction1main" ,通过 main 调用 function1,function1 返回到 main,然后 main 完成。但由于某种原因,我得到一个无限循环,打印“mainfunction1mainfunction1......”我做错了什么?

    .data
mainstring: .asciiz "main"  
string1: .asciiz "function1"
string2: .asciiz "function2"
string3: .asciiz "function3"

.text

main:   la $a0,mainstring
        li $v0, 4
        syscall

        jal function1

        la $a0, mainstring
        syscall

function1: la $a0, string1
            syscall
            jr $ra

就像 JasonD 所说,你需要在 main 结束时退出你的程序。您需要做的就是在 main 末尾添加两行,如下所示:

main:
    # ... previous stuff

    li $v0, 10                                                                                                                                                               
    syscall

这将加载并运行exit系统调用(代码为 10。)

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

简单 mips 中的无限循环 的相关文章

  • 将以下机器语言代码(0x2237FFF1)翻译成MIPS汇编

    到目前为止我已经翻译了这段代码 但我不明白的是如何计算 计算 16 位立即地址的数量 0x2237FFF1 转为二进制 0010 0010 0011 0111 1111 1111 1111 0001 现在我正在读取操作码 001000 并知
  • movsbl指令的作用是什么? [复制]

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

    我正在优化名为的 C 库的编码步骤PackJPG http www elektronik htw aalen de packjpg 我使用 Intel VTune 对代码进行了分析 发现当前的瓶颈是 PackJPG 使用的算术编码器中的以下
  • 内联汇编跳转后抛出 C++ 异常

    我有一些奇怪的自修改代码 但其根源是一个非常简单的问题 我希望能够执行jmp or a call 然后从该任意点抛出一个异常并让包含该异常的 try catch 块捕获该异常jmp call 但是当我这样做时 在 gcc 4 4 1 x86
  • GCC 内联 asm NOP 循环在编译时未展开

    走出我通常的 VC 领域 进入 GCC 的世界 通过 MINGW32 尝试创建一个主要由 NOP 组成的 Windows PE ala for i 0 i lt 1000 i asm nop 但要么我使用了错误的语法 要么编译器正在通过它们
  • LDR指令如何将常量加载到寄存器中?

    我刚刚读了一本ARM指令书 看到一条指令我无法解释 It says LDR将 32 位常量加载到r0登记 LDR r0 pc const number 8 pc const number DCD 0xff00ffff 我不明白什么 pc c
  • 将 C 函数与 ARM 汇编结合使用

    我见过人们在代码中使用 C 库中的 printf 的示例 如下所示 data balign 4 hello asciz Hello n text global main func main main ldr r0 hello msg bl
  • 编写一个新的 jit

    我有兴趣用 C 启动我自己的 JIT 项目 我对汇编或编译器设计等并不熟悉 但是 我对生成的机器代码格式非常不熟悉 比如 当一切都说了和完成后 mov 指令实际上是什么样子 是时候调用它了函数指针 那么 创建这样的东西的最佳资源是什么 编辑
  • 为什么 NASM 在使用有效的指令助记符作为操作数中的符号名称方面没有问题?

    我编写了以下简单程序 但 nasm 拒绝编译它 section text global start start mov rax 0x01 mov rdi 0x01 mov rsi str mov rdx 0x03 syscall mov r
  • x86 汇编乘法和除法指令操作数,16 位及更高

    我对 x86 汇编中的乘法和除法运算如何工作感到相当困惑 例如 下面的代码看起来并不太困难 因为处理的是 8 位 8 位乘法 User Input num1 20 num2 15 mov ax num1 moves the 8 bits i
  • 为什么 GCC 不将这个“printf”优化为“puts”?

    这是我的测试代码 include
  • Linux 内核中是否使用了扩展指令集(SSE、MMX)?

    好吧 它们带来 至少应该带来 性能的巨大提升 不是吗 所以 我还没有看到任何 Linux 内核源代码 但很想问 它们是否以某种方式被使用 在这种情况下 对于没有此类指令的系统 必须有一些特殊的 代码上限 SSE 和 MMX 指令集在音频 视
  • 编译器在函数名称前添加下划线前缀的原因是什么?

    当我看到 C 应用程序的汇编代码时 如下所示 emacs hello c clang S O hello c o hello s cat hello s 函数名称以下划线作为前缀 例如callq printf 为什么这样做以及它有什么优点
  • 汇编:使用数据段寄存器(DS)

    目前我正在学习 x86 汇编 因为我喜欢微控制器编程 所以我熟悉汇编 目前我一直在到处寻找这个问题的答案 但似乎找不到它 DS寄存器 我知道它应该指向我程序中的全局数据 但我不知道知道它到底是如何工作的 我正在使用 NASM 在大多数简单的
  • 调用/返回/jmp等后x86代码执行?

    我希望这个问题不会太愚蠢 因为它看起来似乎很明显 当我对缓冲区溢出进行一些研究时 我偶然发现了一个简单的问题 调用 返回 跳转后转到新指令地址后 CPU是否会执行该地址处的OP代码 然后将一个字节移动到下一个地址并执行下一个OP代码 依此类
  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • 简单内核无法在 GRUB 中启动

    我正在学习一些操作系统开发的知识OSDev org http osdev org 我有一个内核 我正在尝试使用 qemu 在 GRUB Legacy 0 97 中启动 但是 当我输入kernel 200 9 我收到消息 Multiboot
  • 内存映射图形输出

    我正在探索使用内存映射图形绘制像素和线条 我在 Windows 的 Textpad 中使用 TASM 当我单击 运行 时 整个屏幕变成蓝色 就是这样 没有绘制像素 model small stack data saveMode db xVa
  • 查找用户输入中的第一个和最后一个大写字母

    输入将从 a z 或 A Z 中获取 并且输入以星号结束 我们需要将输入字符的第一个和最后一个大写字母作为输出 另外 我们应该显示每次输入的内容 注意 我们逐个字符地获取输入 而不是作为字符串 测试用例1 输入 aAbCcP 输出 AP 测

随机推荐

  • 模拟空格键按键

    我到处搜索 阅读MDN上的文档 但我似乎无法解决这个问题 I want to emulate the client pressing the space bar using JavaScript 我试过了 var e new Keyboar
  • 如何使用 JSDoc Typescript 声明隐藏“私有”方法?

    假设我有一个 JavaScript 类 element my element export class MyElement extends HTMLElement publicMethod private privateMethod cus
  • SQL:ENUM 与一对多关系的优点?

    我很少看到 ENUM 数据类型在野外使用 开发人员几乎总是只使用如下所示的辅助表 CREATE TABLE officer ranks id int PRIMARY KEY title varchar NOT NULL UNIQUE INS
  • PHPcurl:“列表中的未知密码”

    我正在使用以下密码列表curl setopt CURLOPT SSL CIPHER LIST DHE DSS AES256 GCM SHA384 DHE RSA AES256 GCM SHA384 DHE RSA AES256 SHA256
  • 如何包装一个方法,以便在超过指定超时时终止其执行?

    我有一个我想调用的方法 然而 我正在寻找一种干净 简单的方法来杀死它 或者在执行时间太长的情况下强制它返回 我正在使用Java 为了显示 logger info sequentially executing all batches for
  • 从 AWS Lambda 连接到 Redshift

    我正在尝试连接到我的Redshift来自我的数据库AWS Lambda功能 con psycopg2 connect dbname my dbname host my url port 5439 user username password
  • Nodejs crypto.publicEncrypt 在不同的机器上产生不同的结果

    我们正在尝试使用 AWS KMS 中的非对称密钥进行加密和解密 key的配置如下 在 NodeJS 中 我们通过 crypto publicEncrypt 使用公钥进行加密 const encryptRSAPayload buffer pu
  • 什么是mockito-inline以及它如何模拟最终方法?

    Mockito 中的 Javadocs 说 从版本 2 7 6 开始 我们提供了 mockito inline 工件 无需配置 MockMaker 扩展文件即可实现内联模拟制作 这是什么意思 mockito inline 是如何工作的 为什
  • 如何使用 JavaScript 读取文本区域中的文本?

    所以我是 JS 的新手 正在尝试了解基础知识 我决定制作一个基本的网页文本编辑器 现在我正在尝试用 JS 来区分单词 这是我的代码 基本上它确定单词 bob 是否已输入到文本区域中
  • 使用 php 验证链接

    谁能告诉我是否可以用 php 验证链接 通过验证 我的意思是检查链接是否处于活动状态 并且不仅仅是链接的实际格式 您需要执行 HEAD 请求并检查响应 200表示请求成功 还有其他的可以在这里找到 http www w3 org Proto
  • MacPorts 手动端口位置

    我正在从 MacPorts 安装一个 python 库 但macports版本的库比实际开发的svn版本旧 是否可以在 MacPorts 中指定端口安装的自定义位置 以便我可以从开发人员站点安装最新的库 Have http guide ma
  • MySQL 复合索引和运算符 BETWEEN

    我对这个查询有一个疑问 SELECT FROM runs WHERE NOW BETWEEN began at AND finished at 您认为为 begin at 和 finish at 列创建复合索引有意义吗 或者只为 begin
  • 模糊效果在模拟器中显示,但在 iPhone 上不显示

    我想创建一个模糊效果UIImageView与下面的代码 问题是 当我在模拟器中运行它时 我可以看到 BlurEffect 但当我连接 iPhone 时却看不到 这里我只能看到灰色背景 有什么想法吗 这是我使用的代码 import UIKit
  • 如何在 MASM 中编写远绝对 JMP/CALL 指令?

    如何使用 MASM 编写远绝对 JMP 或 CALL 指令 具体来说 如何让它使用 EA 和 CA 操作码发出这些指令 而不使用 DB 或其他数据指令手动发出它们 例如 考虑跳转到引导扇区中 FFFF 0000 处的 BIOS 重置入口点的
  • 使用 python 从 BytesIO 创建 Excel 文件

    我在用pandas用于存储 Excel 的库bytesIO记忆 稍后我会存储这个bytesIO对象导入 SQL Server 如下 df pandas DataFrame data1 columns col1 col2 col3 outpu
  • 非常慢的 HHVM、Wordpress、Nginx

    我可能做错了什么 但我正在 php fpm wordpress 设置和 HHVM wordpress 设置之间进行一些测试 我听过并看到过 HHVM 的许多令人兴奋的结果 但我只是对我得到的结果感到震惊 使用以下 apache 测试命令 我
  • 来自 Android 版 IndexedDB Chrome 中保存的块的 HTML5 视频

    我想使用 IndexedDB 在客户端存储离线 HTML5 应用程序的视频文件 为此 我从服务器 API 中下载了 2 个块的视频 然后我将它们作为 blob 存储在 indexedDB 中 然后在其他页面上我从数据库获取它们并创建新的 b
  • 迭代调用 pandas datareader

    我有一个带有股票列表的 python 字典 我试图在 for 循环中使用键 股票代码 见下文 来迭代地为所有股票 以股票代码命名 创建多个 pandas DataFrame 并通过 pandas DataReader 填充价格 交易量 我认
  • JavaFX和Mac:如何设置窗口关闭按钮修改状态?

    我希望能够设置应用程序的修改状态并将其反映在窗口关闭按钮 即其中的黑点 中 我发现了一个非常好的概述 参见 http nadeausoftware com node 90 http nadeausoftware com node 90 如何
  • 简单 mips 中的无限循环

    我正在尝试了解 ra 所以我想要的输出是 mainfunction1main 通过 main 调用 function1 function1 返回到 main 然后 main 完成 但由于某种原因 我得到一个无限循环 打印 mainfunct