首页 > 其他分享 >PA1:监视器相关1

PA1:监视器相关1

时间:2024-02-03 09:23:26浏览次数:27  
标签:PA1 函数 exec cmd 监视器 内存 相关 isa cpu

监视器这一章节,所需的代码都在nemu/src/monitor/sdb下,修改也是集中在这里修改,讲义讲的有点模糊,所以我直接写在这里。

 

相比于scanf ,sscanf可以从字符串中读取内容。   比如char str[]="123 4.567  yes"   sscanf就可以sscanf("%d %lf %s",&a,&b,&c)

我看了sdb.c的源文件,cmd_c cmd_q cmd_help  分别对应了已经支持的三个按键功能  ,按照表格,内存监视已经实现,但是这里没有写入。此外上面的 rl_gets函数应该对应的是命令扫描。

这一章节的任务是实现表格中间的三项:单步执行、扫描内存和打印寄存器。

首先改的是打印寄存器,在cmd_table里按上面的格式增加对应项,然后在cmd_q下面再增加函数cmd_print_status,里面引用isa/riscv64下的isa_reg_display函数,但是这个函数也需要自己实现。只在sdb.c里加个套壳是没用的,官方只给了api的壳子。

实现也很简单,reg.c里面已经定义了32个寄存器名字,直接逐个printf就行:

void isa_reg_display()
{
    int i=0;
    for(i-0;i<32;i++)
    {
        printf("%s:%d\t",regs[i],*regs[i]);
    //这一行第二个参数用%p搭配regs[i]应该也可以    
        if(i%4==0)  pritnf("\n");
    }
}

/////////////      一个.c文件直接include自己对应的.h文件,表示直接引用.h中的已经定义好的宏,这样就不需要再定义一遍。

 

  然后是单步执行,表格里要求要实现任意步,但这里暂时只实现一步。  对应函数应该就是src/cpu内的cpu-exec.c文件,里面分别定义了exec_one、execute和cpu_exec三个函可能相关的函数数,分别对应执行一次和多次。但这个写了以后我还没想到应该怎么样验证。考虑到cmd_c里面用的是cpu_exec(-1),那我就在单步执行里用cpu_exec(1).  

  这里没有考虑输入参数的问题,如果还考虑输入参数,那么还需要对args进行转换、判断。

 

  然后是扫描内存,关于扫描内存,这个我确实没有什么过多思路,顺着monitor.c找到了memory/paddr.c里面的,又在isa.h里进行了查找,我猜isa.h的 isa_mmu_check可能是我需要的函数,但我还不是很确定。所以先调用试了一下,但是类型这一点我不确定应该用什么。paddr.c里面有omem_read这样的函数,但这似乎是读取的主机内存。

  依次尝试了一下,vaddr_read()不可以,isa_mmu_check()也不行

 

此外,我在paddr.c里面看到了似乎是访客内存和主机内存的转换函数。

另注,这几个函数都需要用int 型,因为都需要返回值,用void会导致编译器提示指针类型不符。

 

标签:PA1,函数,exec,cmd,监视器,内存,相关,isa,cpu
From: https://www.cnblogs.com/namezhyp/p/18003310

相关文章

  • autoware相关
    CUDAToolkitv9.0orv10.0CUDNN:Testedwithv7.3.1TensorRT:Testedwith5.0.2->Howtoinstallhttps://github.com/k0suke-murakami/kitti_pretrained_point_pillars/ GPU编译:$AUTOWARE_COMPILE_WITH_CUDA=1colconbuild--cmake-args-DCMAKE_BUILD_TYPE=......
  • 从TF-IDF 到BM25, BM25+,一文彻底理解文本相关度
    相关性描述的是⼀个⽂档和查询语句匹配的程度。我们从搜索引擎召回时,肯定希望召回相关性高的数据,那么如何来量化相关度呢。首先,我们定义,一个文档doc,由多个词语term组成。最早,通过最简单的TF-IDF来衡量。TF-IDF朴素的思想,相关度应该是词语权重、文档权重的融合。词频TF(Ter......
  • 近期融资组领行业相关政策
    近期融资组领行业相关政策时间发文机构文件名称主要内容2022年2月中国银保监会《关于加强金融租赁公司融资租赁业务合规监管有关问题的通知》加强金融租赁公司融资租赁业务合规监管,摒弃“类信贷”经营理念,突出“融物”特色功能。2023年3月安......
  • PA1:nemu相关讲义
    编译中出错:提示没有<SDL2/SDL.h>头文件查看错误信息,出错的文件在abstract-machine文件夹里,叫input.c,里面引用了SDL2/SDL.h 这个头文件,但是我只在fceux文件夹里搜到了sdl.h,考虑到linux区分大小写,搜索以后,我觉得我应该是系统缺少了SDL库。sudoaptinstalllibsdl2-dev  安......
  • 【VIrtuoso】abstract的相关配置
    需要将cds.libcopy过来,保证abstract能够吃到工艺的相关信息 absSkillMode()absSetOption("NewLibraryPath""./")absSetOption("NewLibraryName""TEST")absSetLibrary("TEST")absAttachTechLib("TN28")absSetOption(&quo......
  • C#中?和!相关语法用途
    首先?相关语法,包括?. ??  ?:  ?1.可空类型修饰符(?)众所周知,在C#中引用类型可以使用一个null引用来表示一个不存在的值,比如stringstr=null是正确的;但是值类型却不能为空,比如intk=null那么编译器就会报错;为了让值类型也可以为空,就需要使用可空类型,即用可空类型修......
  • 数论总结_同余相关
    贰.与数论函数联系不大的东西二.定理费马小定理&欧拉定理若\(p\)为质数且\(a\not\equiv0\pmodp\),则\(a^{p-1}\equiv1\pmodp\).若\(\gcd(a,m)=1\),则\(a^{\varphi(m)}\equiv1\pmodm\).三.算法1.欧几里得相关求\(\gcd\)\[\gcd(a,b)=\begin{cases}a&b......
  • EAS_附件相关表及根据单id查单据附件
    查单据附件sql:select*fromT_BAS_Attachmenttwheret.fidin(selecto.fattachmentidfromt_bas_boattchassoowherefboid='FqEAAAKEtufZvdiA') 1、t_bas_boattchasso(附件与业务对象关联)2、T_BAS_Attachment(附件表)在shr中还有一个扩展表(T_HR_SHRAttachmentEx......
  • SpringBoot、SpringCloud相关技术
    一、三层架构 1.1统一业务处理1.2解决三层架构中的结偶,使用了Ioc(控制反转)和DI(依赖注入) 1.3切面编程、事务处理、全局异常处理、Cookie、Session、JWT令牌、阿里云OSS、Mybatis处理数据库二、技术分类说明  2.1SSM三、Web总结四、相关第三方插件https://www......
  • Gitlab 权鉴相关
    解决思路1、首先登录gitlab服务器执行以下命令:sudogitlab-railsconsole-eproduction 2、通过命令查找,确定用户为“root”#以下这两个命令都可以,随便输入一个user=User.where(id:1).firstuser=User.where(name:"root").first 3、将root用户密码重置为admin123......