首页 > 其他分享 >lab1

lab1

时间:2023-06-11 17:34:26浏览次数:53  
标签:va esp long lab1 num ebp com

Part 1 :PC Bootstrap

exercise1

exercise2

Part2 : The Boot Loader

exercise3

exercise4

exercise5

exercise6

Part3 : The Kernel

exercise7

movl %eax, %cr0

exercise8

case 'o':
		// Replace this with your code.
		num = getuint(&ap,lflag);
		base = 8;
		goto number;

注意这儿是无符号八进制的写法;有符号的写法为:

case 'o':
	num = getint(&ap, lflag);
	if ((long long) num < 0) {
		putch('-', putdat);
		num = -(long long) num;
	}
	base = 10;
	goto number;

说明:对于该exercise下的6个问题,前三个方法:先在kern/printf.c文件下的vcprintf函数处打一个断点,接着在kern/monitor.c文件中的mon_backtrace函数打一个断点,执行,使用bt查看栈使用情况;x/s fmt ; x/3wx [ap的地址];
可以发现,对于可变参数的cprintf函数:可变参数先入栈,格式串后入栈,对应于第六个问题;
对于va_arg函数,参考:
https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/va-arg-va-copy-va-end-va-start?view=msvc-170

exercise9

mov    $0xf0110000,%esp
#define KSTKSIZE	(8*PGSIZE)  

区间为: 0xf0107000 - 0xf0110000

exercise10

1、%esp = 0xf010ffe0; %ebp = 0xf010fff8
call之前,%esp = 0xf010ffd0; %ebp = 0xf010ffd8
五次调用之后 %esp = 0xf010ff30; %ebp = 0xf010ffd8
结束调用与文档不同

exercise11

exercise12

stab表用于存储源文件以及编译后文件对应关系的一张表。
函数stab_binsearch,是找到对应类型的条目,并打印出来;

标签:va,esp,long,lab1,num,ebp,com
From: https://www.cnblogs.com/xuan01/p/17473249.html

相关文章

  • 6.824 Lab1
    1例子:运行非并行版mrsequential.go运行一下cd~/6.5840cdsrc/maingobuild-buildmode=plugin../mrapps/wc.gormmr-out*gorunmrsequential.gowc.sopg*.txtmoremr-out-0运行结果2工作2.1改哪些main/mrcoordinator.go和main/mrworker.go不能修改我们只需......
  • 进程注入分析实战——通过process explorer可以看到lab12-01.dll在运行时加载了, 要查
     要查看dll被哪个进程所使用,可以在processexplorer里搜索!  这个技巧在分析恶意DLL加载时候非常有用!!!笔记可以通过processexplorer查看进程注入的dll,比如注入后可以看到lab12-01.dll在注入的运行进程里。    启动器Launcher用来加载恶意代码使用,通常在资源中包含一个exe或d......
  • CS61A_lab14_macro
     (define-macro(switchexprcases)(cons'cond(map(lambda(case)(cons(eq?(evalexpr)(carcase))(cdrcase)))cases))) 这段代码是一个用于Scheme语言的宏定义,可以将一系列的条件分支语句转化为Scheme的cond表达式。下面是具体的......
  • CS61A_lab12_macro
     (define-macro(deffuncargsbody)`(define,(consfuncargs),body))分析:定义一个万能的函数定义,那就要模拟函数定义的样子。ok,函数定义是什么样子的呢?eg:(define(filter-lstfnlst)(if(null?lst)nil(if(fn(carlst))(cons(carlst)(fi......
  • CS144 计算机网络 Lab1:Stream Reassembler
    前言上一篇博客中我们完成了Lab0,使用双端队列实现了一个字节流类ByteStream,可以向字节流中写入数据并按写入顺序读出数据。由于网络环境的变化,发送端滑动窗口内的数据包到达接收端时可能失序,所以接收端收到数据之后不能直接写入ByteStream中,而是应该缓存下来并按照序号重组成......
  • CS_61A_lab10
    Write sub-all,whichtakesalist s,alistof old words,andalistof new words;thelasttwolistsmustbethesamelength.Itreturnsalistwiththeelementsof s,butwitheachwordthatoccursinthesecondargumentreplacedbythecorresponding......
  • MIT 6.5840 2023 Spring(6.824)LAB1:MapReduce
    MIT6.58402023Spring(6.824)LAB1:MapReduce前言本次lab主要是完成一个基于RPC远程调用的单机单文件系统的简单MapReduce框架,并完成单词计数任务。基于golang实现,单Master,多Worker。实现worker的奔溃恢复(FaultTorrance),通过超时重新执行实现。主要的任务有,RPC调用参数及返回参数......
  • mit6.s081 lab1:Unix Utilities
    1sleep(easy)要求:为xv6实现UNIX程序睡眠;睡眠需要暂停一段用户指定的时间。刻度是由xv6内核定义的时间概念,即定时器芯片两次中断之间的时间。解决的程序应该在user/sleep.c文件中。 一些小提示:查看user/中的其它程序,如echo.c,grep.c或rm.c,明白如何获取传递给程序的......
  • MCDT实验——lab1
    TB1从verilog到SV的进场要求1.1一致,questasim对.v文件是兼容的要求1.2(如果出现一致,可能是因为cho_margin的位宽问题,给的源文件位宽是5[4:0]不是6[5:0])一致要求1.3一致TB2方法task和函数function要求2.1时钟和复位信号出现报红。(因为clk_gen()和rstn()没有被调用)要求2.2......
  • lab1前置
    1课程目的了解操作系统的设计和实现。操作系统应提供的功能:1.多进程支持2.受控制的进程间通信3.进程间隔离为了深入了解具体的工作原理,本实验将通过一个小的叫做XV6的操作系统,获得实际动手经验。通过研究现有的操作系统,并结合课程配套的实验,你可以获得扩展操作系统,修改并提......