计算机系统基础

根目录什么意思  时间: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到此结束

爱用云互联租用服务器租美国、日本、美国、日本、购买2天内不满意可以退换,IP可免费更换!

爱用云互联怎么样?爱用云是一家成立于2018年的老牌商家旗下的服务器销售品牌,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端...

美国高防云服务器 1核 1G 10M 38元/月 百纵科技

百纵科技:美国云服务器活动重磅来袭,洛杉矶C3机房 带金盾高防,会员后台可自助管理防火墙,添加黑白名单 CC策略开启低中高.CPU全系列E52680v3 DDR4内存 三星固态盘列阵。另有高防清洗!百纵科技官网:https://www.baizon.cn/联系QQ:3005827206美国洛杉矶 CN2 云服务器CPU内存带宽数据盘防御价格活动活动地址1核1G10M10G10G38/月续费同价点击...

HostYun(月18元),CN2直连香港大带宽VPS 50M带宽起

对于如今的云服务商的竞争着实很激烈,我们可以看到国内国外服务商的各种内卷,使得我们很多个人服务商压力还是比较大的。我们看到这几年的服务商变动还是比较大的,很多新服务商坚持不超过三个月,有的是多个品牌同步进行然后分别的跑路赚一波走人。对于我们用户来说,便宜的服务商固然可以试试,但是如果是不确定的,建议月付或者主力业务尽量的还是注意备份。HostYun 最近几个月还是比较活跃的,在前面也有多次介绍到商...

根目录什么意思为你推荐
月付百万的女人们我们家的女人们92集在线观看 韩剧我们家的女人们92中字 我们家的女人们93集快播下载985和211哪个好211的院校和985的那个好?游戏加速器哪个好网游加速器哪个最好用?手机管家哪个好有哪些人下了手机管家,最好的是哪个?行车记录仪哪个好行车记录仪哪种好用?云盘哪个好免费的网盘哪个好?更大、更安全、更实用?美国国际东西方大学明尼苏达大学(是莫瑞斯分校)和美国东北大学 应该去哪一个 是这个方面的专家回答啊!有偏见性的不要说!扣扣空间登录QQ空间怎么老是提示登陆?qq空间登录界面我的手机QQ打开应该是九个选项,什么空间,但是现在打开怎么直接是QQ登录界面,这个撇手机考生个人空间登录自学考试的“考生个人空间”密码忘记了……一定要本人带身份证和考籍证去有关部门吗?
免费网站域名申请 iis安装教程 dropbox网盘 建站代码 圣诞节促销 华为4核 韩国网名大全 天互数据 isp服务商 网购分享 太原联通测速 申请免费空间 镇江高防服务器 美国主机 美国代理服务器 alexa世界排名 发证机构 卡巴斯基官方下载 跟踪路由 挂马检测工具 更多