Fibonacci在机器语言的OISC中使用SBN

时间:2010-04-08 08:32:10

标签: assembly fibonacci oisc

我想在OISC架构中使用SBN生成斐波纳契系列。我最初的方法是首先用汇编语言实现它,然后将其转换为机器语言。第一步涉及将0和1存储在2个寄存器中,然后从0中减1,并在后续步骤中重复减1。每次它将产生一个负数,并且由于它是负数,它会分支并获取绝对值查找指令。

我的方法是否正确?我对OISC意义的困惑。纠正我,如果我错了,如果我执行减法然后绝对值发现,这意味着我每次都使用2条指令。或者是在OISC处理器中,这些指令都是在同一时间完成的,这意味着我的方法是正确的。

2 个答案:

答案 0 :(得分:2)

可以从OISC指令的组合合成通用汇编指令。例如,取自Wikipedia page,另外:

ADD a, b == subleq a, Z
            subleq Z, b
            subleq Z, Z

BEQ

BEQ b, c == subleq b, Z, L1
            subleq Z, Z, OUT
        L1: subleq Z, Z
            subleq Z, b, c
       OUT: ...

重要的见解是,一旦拥有了这些构建块,就可以构建更复杂的块。例如,使用ADDBEQ,您可以轻松实现计数循环(这对斐波纳契来说很有用......)

所以你可以做到以下几点:

  1. 以普通汇编语言实现Fibonacci(最多应该占用几行)
  2. 请参阅哪些说明可替代可从OISC说明中轻松合成的说明
  3. 使用OISC重写

答案 1 :(得分:1)

你有2种方法可以解决它:

  • 您的数据结构包含真实(正范围)斐波纳契数;如果是这样,你确实需要做一个计算和一个否定(你称之为绝对)步骤,即。每个整数最少2个。
  • 或者,你可以解决它的0补码:-1,-1,-2,-3,-5,-8 ...这样,你只需要否定结果打印/提供快速一步计算,但是当您访问它时(即将其打印给用户时),转换成本很低。