-
程序执行结果
不仅取决于 算法、程序编写
而且取决于 语言处理系统 操作系统 ISA 微体系结构
- Ld M#,R# (将存储单元内容装入寄存器)
St R#,M# (将寄存器内容装入存储单元)(store也就是将数据存到存储单元,即存储器中) - CPU:中央处理器;PC:程序计数器;MAR:存储器地址寄存器
ALU:算术逻辑部件;IR:指令寄存器;MDR:存储器数据寄存器
GPRs:通用寄存器组(由若干通用寄存器组成,早期就是累加器)
现代计算机结构模型
- 现在,几乎所有程序员都用高级语言编程,但最终要将高级语言转换为机器语言程序
有两种转换方式:“编译”和“解释”
• 编译程序(Complier):将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可
• 解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并立即执行,不生成目标文件。
- 将汇编语言源程序转换为机器语言目标程序的程序称为汇编语言程序(X)
将汇编语言源程序转换为机器语言目标程序的程序称为汇编程序(√)
- 最重要的系统软件是操作系统和语言处理系统
语言处理系统运行在操作系统之上,操作系统利用指令管理硬件
- 定点数的编码(解决正负号问题)
- 后缀“B”表示二进制数,如
01011010B - 八进制:Octal (用后缀“O”表示)
十六进制:Hexadecimal (用后缀“H”,或前缀“0x”表示) - 实际上,记住1、2、4、8、16、32、64、128、256、512、1024、2048、
4096、8192、16384、32768、65536,…..就可简单进行整数部分的转换
记住0.5、0.25、0.125、0.0625、…… 就可简单进行小数部分的转换
2147483648=2 31
- 定点数的编码(解决正负号问题)
–原码、补码、移码(????移码主要是为了对阶进行比较而引入的)、反码 (很少用)
- 结论1: 一个负数的补码等于将对应正数补码
各位取反、末位加一 - 在32位机器中,一个int型变量的值为-1,则机器数为?
正确答案:1111 1111 1111 1111 1111 1111 1111 1111
01是机器数。真值是真正的值。
- 2(31)的无符号数表示为“100…0” (懂了,后面接31个零)被解释为32位带符号整数
时(加上符号位,然后各位取反加1),其值为最小负数:–2 32-1 = –2 31 = –2 147 483 648。
- 如果把b换成B,则表示字节而不是比特(位)
- k表示10的3次方,K表示2的10次方。
选择题
-
2.一条机器指令通常由多个字段构成。以下选项中,通常( )不显式地包含在机器指令中。
A.寄存器编号
B.寻址方式
C.下条指令地址(√)
D.操作码 -
4.令集体系结构(ISA)是计算机系统中必不可少的一个抽象层,它是对硬件的抽象,软件通过它所规定的指令系统规范来使用硬件。以 下有关ISA的叙述中,错误的是( )。
A.ISA规定了执行每条指令时所包含的控 制信号 (√)
B.ISA规定了指令获取操作数的方式,即寻址方式
C.ISA规定了指令的操作数类型、寄存器结构、存储空间大小、编址方式和大端/小端方式
D.ISA规定了所有指令的集合,包括指令格式和操作类型 -
7.以下关于IA-32指令格式的叙述中,错误的是( )。
A.采用变长操作码,操作码位数可能是5位到十几位不等
B.采用变长指令字格式,指令长度从一个字节到 十几个字节不等
C.指令中给出的操作数所在的通用寄存器的宽度总是32位(√)
D.指令中指出的位移量和立即数的长度可以是0、1、2或4个字节 -
9.以下关于IA-32中整数运算指令所支持的操作数的叙述中,错误的是( )。
A.除乘法指令外,其他运算指令的源操作数和目的操作数的位数相等(√)
B.对于加减运算指令,操作数不区分是无符号整 数还是带符号整数
C.对于乘除运算指令,操作数一定区分是无符号 整数还是带符号整数
D.参加运算的操作数可以是一个字节(8b)、一 个字(16b)或双字(32b)10.以下关于IA-32的定点寄存器组织的叙述中,错误的是( )。
A.每个通用寄存器都可作为32位、16位 或8位寄存器使用(√)
B.EIP/IP为指令指针寄存器,即PC;EFLAGS/FLAGS为标志寄存器
C.寄存器ESP/SP称为栈指针寄存器,EBP/BP称为基址指针寄存器
D.寄存器EAX/AX/AL称为累加器,ECX/CX/CL称为计数寄存器
C++语言程序设计基础(2020春)
https://next.xuetangx.com/learn/THU08091000247/THU08091000247/1515741/video/1358742
第6章的指针的定义和运算
- *指针运算:实际是一个寻找地址的过程。然后去访问指针所指向的那个单元。
- &地址运算:去计算一个变量或者是一段代码的地址,把它的地址反馈回来。