机器语言
软硬件之间的接口ISA
指令集结构(ISA)是
计算机硬件和软件之
间的接口
处理器设计的依据
编写程序时所要注意
的全部信息
RISC-V指令集结构
定义了RISC-V指令集结构
可以在RISC-V机器上编写程序
机器语言
汇编语言
也可以将高级语言程序翻译到RISC-V机器上执行
机器语言与汇编语言
机器语言
依据指令集使用二进制编码,直接在计算机上执
行,不需要经过语言处理
汇编语言
依据指令集的汇编语言格式编写,需经过语言处
理,翻译为机器语言才能在计算机上执行
结构化程序设计
三种基本结构
顺序
选择
循环
顺序
选择
• 一组指令序列生成条件
• 地址B2“条件分支指令”进行条件测试
– 条件为真
– PC <- C2+4
• 条件分支指令立即数/偏移量
• (子任务2指令数+2)4
– 条件为假
– PC <- B2+4
– 子任务2
– 终止于C2的无条件跳转指令
– PC <- D2+4
– 立即数/偏移量:(子任务1指令数+1)4
循环
• 一组指令序列生成条件
• 地址B3“条件分支指令”进行条件测试
– 条件为假
– PC <- D3+4
• 条件分支指令立即数/偏移量:
• (子任务指令数+2)4
– 条件为真
– PC <- B3+4
– 子任务
– 结束于D3的无条件跳转指令
– PC <- A
• 问题:立即数/偏移量应为多少?
判断连续存储单元内是否包含5
检查:
从地址x1000 0000开始存储的10个整数
有5,x9设置为1
没有5,x9为0
计数器控制的循环
x8,计数器
子任务1
选择结构
测试条件 x8==0
不需要生成条件指令
条件分支指令
BEQ x8, x0, D3+4
测试条件 x7==5
不需要生成条件指令
条件分支指令
BNE x7, x6, D2+4
机器语言程序
地址 31 25 24 20 19 15 14 12 11 7 6 0 解释
x1000 0024 …… ......
...... …… ......
x1000 0000 …… ......
...... …… ......
x0040 0034 …… ......
x0040 0030 1 1111110010 1 11111111 00000 1101111 jal x0,-28
x0040 002C 1111 1111 1111 01000 000 01000 0010011 addi x8,x8,-1
x0040 0028 0000 0000 0000 00101 010 00111 0000011 lw x7,0(x5)
x0040 0024 0000 0000 0100 00101 000 00101 0010011 addi x5,x5,4
x0040 0020 0 0000001010 0 00000000 00000 1101111 jal x0,20
x0040 001C 0000 0000 0001 00000 000 01001 0010011 addi x9,x0,1
x0040 0018 0 000000 00110 00111 001 1100 0 1100011 bne x7,x6,12
x0040 0014 0 000001 00000 01000 000 0000 0 1100011 beq x8,x0,32
x0040 0010 0000 0000 1010 00000 000 01000 0010011 addi x8,x0,10
x0040 000C 0000 0000 0000 00101 010 00111 0000011 lw x7,0(x5)
x0040 0008 0000 0000 0101 00000 000 00110 0010011 addi x6,x0,5
x0040 0004 0001 0000 0000 0000 0000 00101 0110111 lui x5,0x10000
x0040 0000 0000 0000 0000 00000 111 01001 0010011 andi x9,x0,0
找到字中的第一个“1”
检查:
x1000 0000~x1000 0003中的字
找出第一个“1”(从左到右)
存储到x9中
如果没有1
x9 <- -1
例如
0010 0000 0000 0000 0000 0000 0000 0000,x9=29
0000 0000 0000 0000 0000 0000 0010 0000,x9=5
选择结构
子任务2
标志控制的循环
标志
x8<0:x8[31]=1
循环子任务
x8=x8<<1
x8[30],x8[29]…==1?
测试条件 x8==0
不需要生成条件指令
条件分支指令
BEQ x8, x0, C2+4
测试条件 x8<0
不需要生成条件指令
条件分支指令
BLT x8, x0, D3+4
机器语言程序
地址 31 25 24 20 19 15 14 12 11 7 6 0 解释
x1000 0000 …… ......
...... …… ......
x0040 0024 …… ......
x0040 0020 1111 1111 1111 00000 000 01001 0010011 addi x9,x0,-1
x0040 001C 1 1111111010 1 11111111 00000 1101111 jal x0,-12
x0040 0018 0000000 00001 01000 001 01000 0010011 slli x8,x8,1
x0040 0014 1111 1111 1111 01001 000 01001 0010011 addi x9,x9,-1
x0040 0010 0 000000 00000 01000 100 1010 0 1100011 blt x8,x0,20
x0040 000C 0 000000 00000 01000 000 1010 0 1100011 beq x8,x0,20
x0040 0008 0000 0001 1111 00000 000 01001 0010011 addi x9,x0,31
x0040 0004 0000 0000 0000 00101 010 01000 0000011 lw x8,0(x5)
x0040 0000 0001 0000 0000 0000 0000 00101 0110111 lui x5,0x10000