计算机系统基础

根目录什么意思  时间:2021-01-30  阅读:()
ProgrammingAssignment2017年9月8日PA1数据的表示、存取和运算1"一名优秀的厨师应当首先对各种食材了如指掌并掌握各种基本的烹饪技巧.
"——L.
Wang2数据=食材PA1–目录PA1-1数据的类型和存取PA1-2整数的表示和运算PA1-3浮点数的表示和运算3PA1–路线图45PA1-1数据的类型和存取PA1-1数据的类型和存取数据基本可以分为两个大类非数值型数据各类文字的编码指令的操作码数值型数据(重点关注)整数浮点数在计算机内,所有类型的数据(包括代码)都表现为01串6PA1-1数据的类型和存取NEMU模拟的是i386体系结构数据存储的最小单位是比特(bit)数据存储的基本单位是字节(byte)典型长度为:1字节、2字节、4字节内存中采用小端方式存储对于超过一个字节的数据低有效位的字节在前(低地址),高有效位的字节在后(高地址)7想表达的数字内存中的数字0x123456780x780x560x340x12低地址高地址PA1-1数据的类型和存取8"巧妇难为无米之炊,没有锅她也不行.
"——L.
Wang我们首先要为待处理的各类数据找到摆放它们的场所,在计算机中,这些场所就是各种类型的存储器PA1-1数据的类型和存取9计算机餐厅程序菜谱数据食材CPU大厨CPU内部的寄存器灶台上的锅主存厨房里的冰箱硬盘仓库解决计算问题的步骤做菜的步骤程序处理的对象做菜加工的对象执行程序的器件执行菜谱的人储存正在处理的数据放置正在加工的食材储存马上要用的数据储存马上用的菜谱和食材存储大量的数据啥都放这里PA1-1数据的类型和存取10寄存器主存/内存硬盘存储器的层次结构越来越大越来越慢PA1-1数据的类型和存取NEMU模拟的是i386体系结构8个32位通用寄存器11GeneralPurposeRegisters:31231570EAXAHAXALEDXDHDXDLECXCHCXCLEBXBHBXBLEBPBPESISIEDIDIESPSP用C语言怎么模拟PA1-1数据的类型和存取NEMU模拟的是i386体系结构框架代码中nemu/include/cpu/reg.
h12//definethestructureofregisterstypedefstruct{//generalpurposeregistersstruct{struct{struct{uint32_t_32;uint16_t_16;uint8_t_8[2];};uint32_tval;}gpr[8];struct{//donotchangetheorderoftheregistersuint32_teax,ecx,edx,ebx,esp,ebp,esi,edi;};};//EFLAGS…}CPU_STATE;要实现和前面图中一样的结构PA1-1数据的类型和存取NEMU模拟的是i386体系结构框架代码中nemu/include/cpu/reg.
h13//definethestructureofregisterstypedefstruct{//generalpurposeregistersunion{union{union{uint32_t_32;uint16_t_16;uint8_t_8[2];};uint32_tval;}gpr[8];struct{//donotchangetheorderoftheregistersuint32_teax,ecx,edx,ebx,esp,ebp,esi,edi;};};//EFLAGS…}CPU_STATE;教程中直接给了答案PA1-1数据的类型和存取在教程§1-1.
3中提出的实验过程及要求:1.
修改CPU_STATUS结构体中的通用寄存器结构体;2.
使用make编译项目;3.
在项目根目录通过.
/nemu/nemu命令执行nemu并通过reg_test()测试用例.
在实验报告中,简要叙述:1.
C语言中的struct和union关键字都是什么含义,寄存器结构体的参考实现为什么把部分struct改成了union14regtest========reg_test()pass~PA1-1顺利完成~PA1-1数据的类型和存取除了寄存器之外,还要熟悉主存的模拟方式及其接口以字节为基本编址单位通过地址直接访问某个字节怎么来模拟数组!
nemu/src/memory/memory.
c中hw_mem[]模拟内存多大nemu/include/memory/memory.
h中MEM_SIZE_B模拟内的对外提供的读写接口memory.
h声明memory.
c中实现150x110x120xAB0xEF0x1C0x49…0xFF012345…N~要熟悉这些接口~16PA1-2整数的表示和运算PA1-2整数的表示和运算17大厨灵巧的双手,拥有处理各类食材的扎实基本功.
NEMU强大的CPU,则拥有处理各类数据(整数、浮点数)实现各种运算的功能.
我们要赋予计算机的CPU进行各种基本数值计算的能力,才好让它执行更为复杂的计算过程PA1–路线图18PA1-2整数的表示和运算整数无符号整数32位整数:0x0~0xFFFFFFFF(32个1)带符号整数(归于某种无符号整数的表示方法)原码表示法:最高位为符号位补码表示法(普遍采用)各位取反末位加一用加法来实现减法可以试试X+(-X)等于多少,其中X为某一32位正整数,-X为其补码表示,运算结果截取低32位19PA1-2整数的表示和运算在NEMU中模拟各类整数运算的部件ALU–算术逻辑单元能进行各类算术运算:加减乘除、移位能进行各种逻辑运算:与或非对应代码:nemu/src/cpu/alu.
c得到运算结果的同时设置标志位EFLAGS指示运算结果的标志位:CF,PF,AF,ZF,SF,OF,…指示机器状态的标志位:IF,…对应代码:nemu/include/cpu/reg.
h20目前只关心这个炒整数之菜油温几成热菜炒糊了没有PA1-2整数的表示和运算怎么来完成模拟呢nemu/src/cpu/alu.
c21uint32_talu_add(uint32_tsrc,uint32_tdest){printf("\e[0;31mPleaseimplementmeatalu.
c\e[0m\n");assert(0);return0;}第一步:找到需要实现的函数执行.
/nemu/nemu遇到错误提示PA1-2整数的表示和运算怎么来完成模拟呢nemu/src/cpu/alu.
c找到i386手册Sec.
17.
2.
2.
11有关ADD指令的描述p.
g.
261of421看FlagsAffected:OF,SF,ZF,AF,CF,andPFasdescribedinAppendixC找到AppendixC并仔细体会(AF不模拟)22第二步:掏出i386手册PA1-2整数的表示和运算怎么来完成模拟呢nemu/src/cpu/alu.
c23第三步:按照手册规定的操作进行实现uint32_talu_add(uint32_tsrc,uint32_tdest){uint32_tres=0;res=dest+src;set_CF_add(res,src);set_PF(res);//set_AF();set_ZF(res);set_SF(res);set_OF_add(res,src,dest);returnres;}voidset_CF_add(uint32_tresult,uint32_tsrc){cpu.
eflags.
CF=result尾数加减乘除法:阶码加减->尾数乘除尾数规格化和舍入31炒浮点数之菜禁止采用利用FLOAT将uint32_t表示的浮点数转换成float再进行运算得到结果(及其类似)的实现方案,比如fpu.
c中被注释掉的部分PA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第一步:处理各类边界条件:零、NaN、无穷大框架代码已经做好了第二步:提取符号、阶码和尾数框架代码也做好了,关键是尾数是否要加上隐藏位32PA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第三步:对阶小阶向大阶看齐,中间运算结果的阶码是大的那个阶小的那个数的尾数向右移shift位shift=大的阶码–小的阶码.
计算时有些细节问题看教程将尾数进行右移,这时候需要谈到保护位(guard,G)、舍入位(round,R)、和粘位(sticky,S)右移的时候尾数的低位进入GRSbits,注意sticky位的处理规则3323220|*|Fraction|G|R|S|*-ImpliedInteger框架代码中的实现技巧:将运算过程中间结果的尾数(不计隐藏位)扩展为26位,即,在提取尾数后,将尾数左移3位,最低3位表示GRSbitsPA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第四步:以无符号数加法计算尾数中间结果假设两个参与运算的尾数已经扩展了GRSbits根据浮点数符号位得到尾数的补码表示进行无符号数加法得到尾数的中间结果,根据尾数中间结果的符号确定结果浮点数的符号,并将尾数转回原码表示GRSbits自然参与运算得到的中间结果仍假设为具有26位尾数(不计隐藏位)3423220|*|Fraction|G|R|S|*-ImpliedInteger若中间结果隐藏位后面恰好为26位,自然天下太平.
但是!
若两个数的阶码恰好相等,这时候尾数加法的结果可能是:1xxxxx(26个x)+1yyyyy(26个y)=10zzzzz(26个z)隐藏位后面有27位了,怎么办PA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第五步:尾数规格化将尾数右移1位,同时阶码加1uint32_tinternal_normalize(uint32_tsign,int32_texp,uint64_tsig_grs)35若中间结果隐藏位后面恰好为26位,自然天下太平.
但是!
若两个数的阶码恰好相等,这时候尾数加法的结果可能是:1xxxxx(26个x)+1yyyyy(26个y)=10zzzzz(26个z)隐藏位后面有27位了,怎么办中间结果符号中间结果阶码,带符号数以方便后续乘除法的处理中间结果尾数(低3位是GRSbits)约定尾数不计隐藏位的长度为26位(传入时可能不满足),64位以方便后续乘除法的处理PA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第五步:尾数规格化uint32_tinternal_normalize(uint32_tsign,int32_texp,uint64_tsig_grs)函数功能:尾数规格化,顺便把舍入一起做了,返回一个符合IEEE754标准的浮点数(放在一个32位无符号整型数中)36Single-precisionFloatingPoint313023220|s|exponent|fraction|s-signPA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第五步:尾数规格化uint32_tinternal_normalize(uint32_tsign,int32_texp,uint64_tsig_grs)分情形讨论符号位不去管它,规格化和舍入都不会改变符号首先,对于加减法,中间结果的exp必然>=0第二,根据sig_grs的情况,要对其进行必要的左规和右规操作Case1:exp>0,且,sig_grs隐藏位后面超过了26位条件:sig_grs>>(23+3)>1且exp>0操作:将尾数右移1位,exp++,直至sig_grs>>(23+3)==1注意stickybit的操作例外:exp加过了头(>=0xFF了),阶码上溢Case2:exp>0,且,sig_grs隐藏位后面不足26位(例如:1.
xxx+(–1.
0))条件:sig_grs>>(23+3)==0且exp>0操作:尾数左移1位,exp--,直至sig_grs>>(23+3)==1例外:exp减过了头(==0了),得到了非规格化数注意为了配合非规格化数的阶码为0表示2-126,需要额外将尾数右移一次,注意stickybit的操作Case3:exp==0,且,sig_grs>>(23+3)==1额外将尾数右移一次,注意stickybit的操作其它情形:无需进行规格化(有哪些情形)37理解教程中的伪代码PA1-3浮点数的表示和运算浮点数的加减法(以internal_float_add()为例)nemu/src/cpu/fpu.
c第六步:舍入uint32_tinternal_normalize(uint32_tsign,int32_texp,uint64_tsig_grs)如果没有产生溢出,根据GRSbits的取值情况进行舍入就近舍入到偶数舍入若产生尾数加1,有可能出现破坏规格化的情况此时需要进行额外的一次右规并判断阶码上溢的情况第七步:得到返回结果简单问题,框架代码已经给出38实现完浮点数加法浮点数减法自然同时实现PA1-3浮点数的表示和运算浮点数的乘除法nemu/src/cpu/fpu.
c第一步:处理各类边界条件:零、NaN、无穷大第二步:提取符号、阶码和尾数(尾数采用64位表示比较方便)第三步:以无符号数加法计算尾数中间结果符号位的处理:简单阶码的处理:乘法:阶码相加,扣除多加的偏置常数除法:阶码相减,加上多减掉的偏置常数(可能减出负数来,所以exp中间结果用带符号数比较方便)尾数的处理(与加减法不同,先不预留出给GRSbits的3位)乘法:尾数做无符号整数乘法,中间结果不计隐藏位有46位尾数除法:被除数左移23位,除以除数,中间结果不计隐藏位有23位尾数我们约定包含GRSbits的尾数中间结果不计隐藏位是26位,因此需要将尾数因整数乘除法运算而多出来的尾数归到阶码上去39PA1-3浮点数的表示和运算浮点数的乘除法nemu/src/cpu/fpu.
c第三步:以无符号数加法计算尾数中间结果尾数的处理(与加减法不同,先不预留出给GRSbits的3位)乘法:尾数做无符号整数乘法,中间结果不计隐藏位有46位尾数除法:被除数左移23位,除以除数,中间结果不计隐藏位有23位尾数我们约定包含GRSbits的尾数中间结果不计隐藏位是26位,因此需要将尾数因整数乘除法运算而多出来的尾数位数归到阶码上去乘法:阶码额外减去46–26=20位除法:如果按照上述处理,则无需调整.
但是,为了保证精度,框架代码做了额外的移位处理(左移加右移共移了shift位),因此,阶码额外减去shift–26位4000001xxxx/1yyy000左移至高位无0右移至低位无01xxxx*1yyyy=1zzzz23个x,23个y,46个zPA1-3浮点数的表示和运算浮点数的乘除法nemu/src/cpu/fpu.
c第四步:尾数规格化,在加减法基础上的额外情形uint32_tinternal_normalize(uint32_tsign,int32_texp,uint64_tsig_grs)额外情形:exp>(23+3)>1的情形一样,需要右规,直至得到非规格化数:exp==0且sig_grs>>(23+3)0(舍入之后仍大于0)在while循环外多右移一次配合非规格化数阶码的约定或,得到规格化数:exp>0且sig_grs>>(23+3)==1例外:已经无法右规了sig_grs<=4(舍入后就是0了),exp仍然小于0,产生阶码下溢其它情况已在做加减法时列举了第五步:舍入第六步:得到返回结果41PA1-3浮点数的表示和运算§1-3.
3实验过程及要求1.
实现nemu/src/cpu/fpu.
c中的各个整数运算函数;2.
将internal_normalize()函数补完;3.
使用make命令编译项目;4.
使用.
/nemu/nemu命令执行NEMU并通过各个浮点数运算测试用例.
在实验报告中,回答以下问题:为浮点数加法和乘法各找两个例子:1)对应输入是规格化或非规格化数,而输出产生了阶码上溢结果为正(负)无穷的情况;2)对应输入是规格化或非规格化数,而输出产生了阶码下溢结果为正(负)零的情况.
是否都能找到若找不到,说出理由.
42fputest========fpu_test_add()passfpu_test_sub()passfpu_test_mul()passfpu_test_div()pass~PA1-3顺利完成~请通过makesubmit命令打包代码并上传cms,同时打包实验报告和调查问卷,谢谢!
测试用例位于nemu/src/cpu/test/fpu_test.
cPA1-3浮点数的表示和运算实现FPU的目的巩固理论知识,备战小测验在fpu.
c中实现的这些internal函数,用于实现fpu.
c中的浮点数运算功能,进而实现x87浮点数指令,框架代码已经给出了这些指令的实现,位于nemu/src/cpu/instr/x87.
c有关x87指令的详细说明,i386手册上没有在古代对于没有FPU的CPU,是采用软件浮点数(直接编译出基于整数运算的浮点数处理过程)来实现的在某些嵌入式系统上,使用binaryscaling这样的定点小数表示法x87指令参见:http://www.
felixcloutier.
com/x86/43PA1数据的表示、存取和运算44PA1数据的表示、存取和运算45我了解到了厨房里面有锅和冰箱.
同时学会了整数和浮点数两种食材的处理方法!
新东方初级班毕业PA1数据的表示、存取和运算PA1不设置小阶段整个PA1的提交截止时间2017年9月20日(周三)24点46祝大家学习快乐,身心健康!
欢迎大家踊跃参加问卷调查(量表一和二今天就要做一次,量表一、二、三到PA1截止时再做一次)47PA1到此结束

TTcloud(月$70)E3-1270V3 8GB内存 10Mbps带宽 ,日本独立服务器

关于TTCLOUD服务商在今年初的时候有介绍过一次,而且对于他们家的美国圣何塞服务器有过简单的测评,这个服务商主要是提供独立服务器业务的。目前托管硬件已经达到5000台服务器或节点,主要经营圣何塞,洛杉矶以及日本东京三个地区的数据中心业务。这次看到商家有推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。内存CPU硬盘流量带宽价...

10gbiz七月活动首月半价$2.36/月: 香港/洛杉矶CN2 GIA VPS

10gbiz怎么样?10gbiz 美国万兆带宽供应商,主打美国直连大带宽,真实硬防。除美国外还提供线路非常优质的香港、日本等数据中心可供选择,全部机房均支持增加独立硬防。洛杉矶特色线路去程三网直连(电信、联通、移动)回程CN2 GIA优化,全天低延迟。中国大陆访问质量优秀,最多可增加至600G硬防。香港七星级网络,去程回程均为电信CN2 GIA+联通+移动,大陆访问相较其他香港GIA线路平均速度更...

A400:36元/季,16.8/月kvm架构,线路优质,延迟低

A400互联是一家成立于2020年的商家,主要推行洛杉矶服务器采用kvm架构,线路优质,延迟低,稳定性高!全场产品对标腾讯云轻量,服务器线路有有美国洛杉矶cn2_gia、香港cn2+cmi,目前推行的vps服务器均为精心挑选的优质线路机房,A400互联推出了夏季优惠洛杉矶5折、香港7折促销活动,质量可靠,价格实惠!二:优惠码洛杉矶五折优惠码:20210620香港cn2七折优惠码:0710三、优惠方...

根目录什么意思为你推荐
朗逸和速腾哪个好买同等价位的朗逸和速腾哪个好?手机音乐播放器哪个好手机哪个音乐播放器的音质更好?英语词典哪个好什么英语词典好?网页传奇哪个好玩有什么好玩的传奇类网页游戏?考生个人空间登录我是2007年入的学2010年毕业我想查询这3年的成绩,怎么办啊?求解答!空间登录qq手机QQ能不能直接登录空间而不用上QQ东莞电信网上营业厅东莞虎门电信营业厅电信dns服务器地址电信现在DNS服务器地址是多少dns服务器什么意思DNS什么意思?360云盘企业版360云盘转企业版我的数据该怎么办
lunarpages sugarsync 哈喽图床 台湾谷歌网址 工信部icp备案号 域名转接 hkg 共享主机 免费吧 亚马逊香港官网 四核服务器 双线机房 服务器维护 我的世界服务器ip 德隆中文网 lamp什么意思 后门 香港博客 godaddyssl 遨游论坛 更多