一生一芯 预学习阶段 PA1--RTFSC中“make menuconfig”

Enable debug information

问题如上。

在menuconfig将 Enable debug information 选项打开,编译时会产生什么变化?

从选项上看是打开了支持调试的选项,编译时应该是添加了支持编译的参数,具体看代码。

首先,我们先看 make menuconfig 这条命令做了什么?

找到 scripts/config.mk 文件,看到如下:

menuconfig: $(MCONF) $(CONF) $(FIXDEP)$(Q)$(MCONF) $(Kconfig)$(Q)$(CONF) $(silent) --syncconfig $(Kconfig)

这部分的作用:

1、首先生成conf、mconf、fixdep文件;

2、运行 mconf 程序,传入 $(Kconfig) 文件;

3、运行 conf 程序根据用户在 menuconfig 中的选择,同步 .config 文件,生成auto.conf文件

接下来在 tools 文件夹下的 .config 文件,include 下的 auto.conf文件,以及可以看到:

CONFIG_CC_DEBUG=y

可以看到DEBUG选项被置成y;

这时就可以知道在make时是将该选项加入了编译。

因此在nemu的文件夹下找到Makefile文件,有如下:

.
.
.
-include $(NEMU_HOME)/include/config/auto.conf
-include $(NEMU_HOME)/include/config/auto.conf.cmd
.
.
.
CFLAGS_BUILD += $(if $(CONFIG_CC_DEBUG),-Og -ggdb3,)
.
.
.

得知首先是载入了auto.conf文件,之后判断 CONFIG_CC_DEBUG ,如果为y则将 -Og -ggdb3 加入到 CFLAGS_BUILD 中,即加入到编译选项中,打开了调试支持的选项。

键入q退出

首先,看源代码能看出以下的函数调用顺序:

main();[nemu_main.c]  →  engine_start();[ src/engine/interpreter/init.c ]  → sdb_mainloop();[src/monitor/sdb.c]  →  cmd_q();[src/monitor/sdb.c]

然后倒过来一步一步往上看:

cmd_q();

static int cmd_q(char *args) {return -1;
}

cmd_q 就是直接返回“-1”;

sdb_mainloop();

int i;for (i = 0; i < NR_CMD; i ++) {if (strcmp(cmd, cmd_table[i].name) == 0) {if (cmd_table[i].handler(args) < 0) { return; }break;}}

当 cmd 与 cmd_table[i].name 匹配时,执行 cmd_table[i].handler(args) 函数,即 cmd_q 函数;有上面可知 cmd_q 返回“-1”,即 cmd_table[i].handler(args) < 0 成立;然后return到调用它的函数engine_start(),

void engine_start() {
#ifdef CONFIG_TARGET_AMcpu_exec(-1);
#else/* Receive commands from user. */sdb_mainloop();
#endif

接着返回到main()函数。

int main(int argc, char *argv[]) {/* Initialize the monitor. */
#ifdef CONFIG_TARGET_AMam_init_monitor();
#elseinit_monitor(argc, argv);
#endif/* Start engine. */engine_start();return is_exit_status_bad();
}

而main函数返回了is_exit_status_bad();函数

再打开is_exit_status_bad();函数

int is_exit_status_bad() {int good = (nemu_state.state == NEMU_END && nemu_state.halt_ret == 0) ||(nemu_state.state == NEMU_QUIT);return !good;
}

这是nemu的退出状态的判断;

运行程序时,nemu_state的状态是NEMU_END且程序正常结束halt_ret = 0时,或者没有运行程序时nemu_state = NEMU_QUIT时表示程序需要退出,此时good = 1,表示程序正常退出。

当good = 0时,程序就是非正常退出。

当我们在终端输入q时,因为没有运行程序无法改变nemu_state的状态为NEMU_END且无法将halt_ret置零。

我们在终端输入q时属于没有运行程序,应该将nemu_state的状态变为NEMU_QUIT即可正常退出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146693.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat 乱码问题彻底解决

1. 终端乱码问题 找到 tomcat 安装目录下的 conf ---> logging.properties .修改ConsoleHandler.endcoding GBK &#xff08;如果在idea中设置了UTF-8字符集&#xff0c;这里就不需要修改&#xff09; 2. CMD命令窗口设置编码 参考&#xff1a;WIN10的cmd查看编码方式&am…

【hot100-java】【组合总和】

R8-回溯篇 印象题&#xff0c;很基本的回溯 class Solution {void backtrack(List<Integer> state,int target,int[] choices,int start,List<List<Integer>> ret){//子集和等于target&#xff0c;记录解if (target0){ret.add(new ArrayList<>(state)…

Java ----常用类

包装类 包装类的分类 1) 针对八种基本数据类型相应的引用类型—包装类2) 有了类的特点&#xff0c;就可以调用类中的方法。3) 如图 包装类和基本数据的转换 jdk5 前的手动装箱和拆箱方式&#xff0c;装箱&#xff1a;基本类型转包装类型&#xff0c;拆箱&#xff1a;包装类型…

探索丹摩智算平台的奇妙之旅:我的CogVideoX实践实验与深刻体验

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀CogVideoX &#x1f4d2;1. 初识CogVideoX&#x1f4da;2. 部署与准备&#x1f31e;在丹摩智算平台上创建实例&#x1f338;CogVideoX代码仓库…

Vue3 中组件传递 + css 变量的组合

文章目录 需求效果如下图所示代码逻辑代码参考 需求 开发一个箭头组件&#xff0c;根据父组件传递的 props 来修改 css 的颜色 效果如下图所示 代码逻辑 代码 父组件&#xff1a; <Arrow color"red" />子组件&#xff1a; <template><div class&…

公司网站改版时,需要注意哪些细节?

在公司网站改版时&#xff0c;需要注意的细节非常多&#xff0c;这些细节将直接影响到网站的用户体验、SEO效果以及整体品牌形象。以下是一些关键的注意事项&#xff1a; 明确改版目标&#xff1a; 在改版前&#xff0c;要明确改版的目标是什么&#xff0c;比如提升用户体验、增…

Linux:权限管理

基本权限和归属 权限和归属 基本权限与归属 • 访问权限 – 读取&#xff1a;允许查看内容-read – 写入&#xff1a;允许修改内容-write – 可执行&#xff1a;允许运行和切换-excute对于文本文件&#xff1a;r读取权限&#xff1a;cat、less、grep、head、tailw写入权限&am…

[已更新前两问代码+全部建模]2024华为杯C题详细思路代码文章建模分享研究生数学建模竞赛数学建模研赛

截止9.21 12点 已更新问题一二的代码和全部内容的建模 下面我们会先进行代码讲解,之后给出全部内容的建模公式 ## https://docs.qq.com/doc/DVWhyZ1NFY01XcmNw基于磁通密度数据的特征提取与分类分析。 问题一代码详解 1. 导入必要的库 import pandas as pd import numpy as…

Innodb内存结构

缓冲池Buffer Pool: 缓冲池是innodb内存结构缓冲区中的核心部分&#xff0c;在服务启动的时候服务器会向操作系统申请一块大小为128MB的内存空间&#xff0c;所有对数据库中数据的增删查改操作均在缓冲池bufferPool中完成&#xff0c;并且缓冲区中其他组件的描述信息也都存储在…

AI绘画Flux【lora模型】【微缩景观】:惊艳!3D场景融入手机上的微景观!

大家好&#xff0c;我是灵魂画师向阳 今天和大家分享一款基于Flux底模训练的微缩景观模型——FLUX|手机上的微景观。此模型主要将手机作为微型景观的基底&#xff0c;强制将3d情景融入手机并控制在手机屏幕上方范围内。 作者在使用提示词直出和使用该Loar提示词生成的图片进行…

手撕小顶堆

1. 抛砖引玉 给定两个以升序排列的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v)&#xff0c;其中第一个元素来自 nums1&#xff0c;第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。 分析 大根堆&#xff08;大顶堆&#x…

多旋翼无人机维修、组装、调试技术详解

多旋翼无人机作为现代航拍、农业植保、物流运输等领域的重要工具&#xff0c;其性能的稳定性和操作的便捷性对于任务的完成至关重要。因此&#xff0c;掌握多旋翼无人机的维修、组装与调试技术&#xff0c;对于无人机操作员及维修人员来说至关重要。本文将详细介绍这三个方面的…

线程池ForkJoinPool实战及其工作原理分析

1. 由一道算法题引发的思考 算法题&#xff1a;如何充分利用多核CPU的性能&#xff0c;快速对一个2千万大小的数组进行排序&#xff1f; 这道算法题可以拆解来看&#xff1a; 1&#xff09;首先这是一道排序的算法题&#xff0c;而且是需要使用高效的排序算法对2千万大小的数…

从一个文本文件中挑选出符合条件的内容行

某天&#xff0c;张三得到一个需求&#xff0c;将如下格式的文本文件中的文件名开头的内容行提取出来&#xff0c;存入一个新的文本文件。 ok 0 文件名&#xff1a;1_zoukaige.mp3 index:10 文件名&#xff1a;2_dahan.mp3 index:20 文件名&#xff1a;3_kuai.mp3 index:30 文件…

【JavaEE精炼宝库】HTTP | HTTPS 协议详解

文章目录 一、HTTP 简介二、HTTP 协议格式&#xff1a;2.1 抓包工具的使用&#xff1a;2.2 HTTP 请求报文格式&#xff1a;2.3 HTTP 响应报文格式&#xff1a;2.4 HTTP 协议格式总结&#xff1a; 三、HTTP 请求详解&#xff1a;3.1 刨析 URL&#xff1a;3.2 方法(method)&#…

Kerberos自我总结Kerberos自我总结

1、协议原理与漏洞产生 1.1 kerberos Kerberos协议是一种基于票据Ticket的认证方式&#xff0c;它由三个角色组成&#xff0c;分别是客户端Client、服务端Server和秘钥分发中心KDC。 协议中的交互分为六步&#xff0c;为AS_REQ、AS_REP、TGS_REQ、TGS_REP、AP_REQ和AP_REP …

揭露大模型本质,大模型入门必看的12本书!看完我直接跪了

敢不敢用一年时间读完这12本书&#xff0c;模型入门必看的12本书&#xff01;建议收藏&#xff01;&#xff01; 第一本&#xff1a; 《基于GPT-3,ChatGPT,GPT-4等Transformer架构的自然语言处理》 主要内容 了解用于解决复杂语言问题的新技术。将GPT-3与T5、GPT-2和基于BE…

用Python实现时间序列模型实战——Day 28-29: 项目报告与展示

一、学习内容 1.1 项目报告的撰写与优化 项目报告应该从项目背景、数据探索、建模过程、预测结果、模型评估等方面进行全面描述。通过清晰的图表、简明的文字和合理的模型选择来优化报告的表达。 1.2 项目结果的展示与交流 通过展示图表、代码、关键模型的结果&#xff0c;…

Linux系统中的进程调度队列

目录 一、进程调度队列结构 二、活动队列与过期队列 1.queue[140] 2.bitmap[5] 一、进程调度队列结构 Linux系统中&#xff0c;每一个CPU都有一个进程调度队列runqueue&#xff0c;如图所示 二、活动队列与过期队列 运行队列runqueue中有两个指针*active、*expired。*acti…

从小白到大神:C语言预处理与编译环境的完美指南(下)

从小白到大神&#xff1a;C语言预处理与编译环境的完美指南&#xff08;上&#xff09;-CSDN博客 &#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;上篇链接在这~~&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x…