Chapter 2 Instruction Language of the Computer

写在开头,我看的版本是RISC-V,不是MIPS

2.22 Exercises

2.1

// f = g + (h - 5); 
// f, g and h have been placed in registers x5, x6, x7
addi    x7, x7, -5
add     x5, x6, x7

2.2

/* 
add f, g, h
add f, i, f
*/
f = i + (g + h);

2.3

// B[8] = A[i - j];
//i in x28, j in x29. A in x10, B in x11
sub     x30, x28, x29
slli    x30, x30, 3           
add     x31, x10, x30           
ld      x9, 0(x31)
sd      x9, 64(x11)

2.4

B[g * 8] = 2 * A[f * 8] + 8;

2.5

little-endian:
0-7: abcdef12

big-endian:
0-7: 12efcdab

2.6

0xabcdef12 = a * (16^7) + b * (16^6) + c * (16^5) + d *(16^4) + e * (16^3) + f * (16^2) + 1 * 16 + 2
= 2882400018

2.7

//B[8] = A[i] + A[j];
//i in x28, j in x29, A in x10, B in x11
add   x30, x10, x28
slli  x30, x30, 3
add   x31, x10, x29
slli  x31, x31, 3
add   x30, x30, x31
sd    x9, 0(x30)
ld    x9, 64(x11)

2.8

A[0] = A[8];
f = A[8] + A[0];

2.9

//addi   x30, x10, 8
immediate: 000000001000
rs1: 01010
funct3: 000
rd:  11110
opcode: 0010011

//addi   x31, x10, 0
immediate: 000000000000
rs1: 01010
funct3: 000
rd: 11111
opcode: 0010011

//sd     x31, 0(x30)
immediate: 0000000
rs2: 11111
rs1: 11110
funct3: 011
immediate: 00000
opcode: 0100011

//ld     x30, 0(x30)
immediate: 000000000000
rs1: 11110
funct3: 011
rd: 11110
opcode: 0000011

//add    x5, x30, x31
funct7: 0000000
rs2: 11111
rs1: 11110
funct3: 000
rd: 00101
opcode: 0110011

2.10

/*
x5 = 0x8000000000000000, x6 = 0xD000000000000000
*/
2.10.1
//add  x30, x5, x6
x30 = 0x5000000000000000
2.10.2

overflow

2.10.3
//sub  x30, x5, x6
x30 = 0xB000000000000000
2.10.4

overflow

2.10.5

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值