当前位置:首页 » 操作系统 » ffd算法

ffd算法

发布时间: 2023-08-25 22:41:57

㈠ 加拿大pc算法教程

1.三级流水线:其实对于PC = PC +8这个问题很简单,这两个PC其实代表着不同的意义,第一个PC是对于CPU而言,而第二个PC而言是我们通过编译器看到的PC(PC指向程序正在运行的那一条指令),但是对于CPU的PC是永远指向取指那个步,故PC = PC +8。

2.五级流水线; ARM9流水线包括取指(fetch)、译码(decode)、执行(excute)、缓冲/数据(buffer/data)、回写(write-back)寄存器堆。ARM9流水线在译码阶段已经开始读取操作数寄存器,因此译码阶段的PC值和取指阶段的PC值关系为:PC(decode)=PC(fetch)+4。因此执行阶段的PC值和译码阶段的PC值关系为:PC(excute)=PC(decode)+4。

3.对于软中断函数的返回时的PC:如下

ARM Thumb

SWI PC-8 PC-4

xxx 》 PC -4 PC-2 (异常返回将执行这条指令)

yyy PC PC

因此返回指令为: MOV PC , LR

原因:异常是由指令本身引起的,因此内核在计算LR时的PC值并没有被更新。对于ARM状态,因为SWI指令表示将跳到异常处理函数,此时SWI这条指令的PC = PC -8,当进入异常处理函数之前,硬件会自动把PC-4保存到LR寄存器中,所以异常处理函数结束后直接MOV PC, LR就行,就会跳到xxx这一条指令去执行。对于Thumb状态同理。

4.对于IRQ和FIQ中断函数返回时的PC:

ARM Thumb

xxx PC-12 PC-6 (程序在运行这条代码时就产生了中断信号)

yyy 》 PC-8 PC-4 (异常返回将执行这条指令)

zzz PC-4 PC-2

www PC PC

返回指令为: SUBS PC, LR, #4

原因:异常在当前指令执行完成后才会被响应,因此内核在计算LR时的PC值已被更新。对于ARM状态,程序在执行xxx这条指令时,中断信号产生,但是由于中断必须在这一条指令执行完之后才会被响应,执行完后,则此时对于CPU的PC已经指向了www这条指令的取指,在中断函数函数时应该执行yyy这条指令,虽然硬件会把PC-4的值赋值给LR寄存器,但是这是指向zzz这条指令的,所以返回时应该SUBS PC, LR, #4。对于Thumb状态同理。

㈡ 急需一个装箱算法的MATLAB程序!谢谢啦~愿出高分!

%装箱问题FFD算法实现
%物品的体积
W = [0.125,0.268,0.159,0.168,0.126,0.168,0.249,0.536,0.427,0.179,0.182,0.149,0.156,0.152,0.135,0.161,0.191,0.183,0.174,0.198];
%箱子的编号
V = 1:1:20;
%箱子的体积
U = [1.4,1.3,1.0,1.1];
%箱子的状态
state = zeros(20,4);

%第一步:将物品体积按照从大到小排序
for i = 1:length(W) - 1
for j = i + 1 :length(W)
if W(i) < W(j)
temp = W(i);
temp_v = V(i);
W(i) = W(j);
V(i) = V(j);
W(j) = temp;
V(j) = temp_v;
end
end
end

%第二步:每次将体积最大的物品放到剩余体积最小的箱子中
for i = 1:length(W)
%找到剩余体积最大的箱子
max = 0;%保存剩余体积最大的体积
max_k = 0;%保存最大体积的箱子的编号
for j = 1:length(U)
if max < U(j)
max = U(j);
max_k = j;
end
end
%将最大的物品放到剩余体积最大的箱子
if W(i) < U(max_k) & state(V(i),max_k) == 0%如果物品的体积比剩余的箱子的体积大
state(V(i),max_k) = 1;%状态发生变化
U(max_k) = U(max_k) - W(i);%箱子的体积变化
else%如果物品的体积比箱子的体积小,则找到下一个剩余体积最小的箱子
maxx = 0;
maxx_k = 0;
for j = 1:length(U)%找到下一个剩余空间最小的箱子
if maxx < U(j) & U(j) > U(max_k)
maxx = U(j);
maxx_k = j;
end
end
%将物品放到这个箱子中
if W(i) < U(maxx_k) & state(V(i),maxx_k) == 0
state(V(i),maxx_k) =1;%状态发生变化
U(maxx_k) = U(maxx_k) - W(i);%箱子的体积变化
else
continue;%否则的话继续循环下一个物品
end
end
end

热点内容
绝对赛车3安卓在哪里下载 发布:2025-02-01 12:42:30 浏览:715
mysql修改数据库字符 发布:2025-02-01 12:37:52 浏览:567
阿里云服务器出厂密码是多少 发布:2025-02-01 12:35:43 浏览:665
手机传文件服务器和ip地址 发布:2025-02-01 12:15:01 浏览:657
儿子编程课 发布:2025-02-01 12:15:00 浏览:901
zsh脚本 发布:2025-02-01 12:13:48 浏览:595
android亮度获取 发布:2025-02-01 12:09:10 浏览:624
小孩什么时候学编程比较好 发布:2025-02-01 12:03:10 浏览:960
c语言的认识 发布:2025-02-01 11:58:03 浏览:521
svn连接服务器地址 发布:2025-02-01 11:51:31 浏览:416