只能用汇编语言编写的算法

时间:2015-11-28 17:47:27

标签: algorithm

您可以在HLL中实现的任何算法都可以在汇编中实现。另一方面,您可以在汇编中实现许多算法,这些算法无法在HLL中实现。 - Randall Hyde

我在前言中发现了这篇关于集会的书。这本书在这里:https://courses.engr.illinois.edu/ece390/books/artofasm/fwd/fwd.html#109

有谁知道这种算法的例子?

4 个答案:

答案 0 :(得分:2)

有一种感觉很简单:在最坏的情况下,你可以在HLL中编写一个仿真器,然后在那里运行算法。但是这有点作弊,因为现在HLL并没有直接实现算法。

许多HLL无法做到的具体例子(或者可能在实践中,但不能保证他们能够做到),是直接实现XOR链表。在许多语言中,你不能使用异或指针,和/或即使你可以(或考虑垃圾收集)它也没有意义。当然,您可以通过整数ID引用每个节点并对其进行异或,但这是一种变通方法,而不是直接实现。

虽然许多(特别是较旧的)语言提供goto,但HLL在实现非结构化控制流方面经常遇到问题。这意味着您可能必须跳过箍来实现状态机(使用循环中的开关或其他任何东西),而不是让程序计数器隐含状态。

还有许多算法和数据结构依赖于典型HLL中不存在的操作,例如popcntlzcnt,可以再次模拟,但是一切都可以。

答案 1 :(得分:1)

这是完全错误的。

您可以在任何图灵完整编程语言中实现任何算法(在CS的意义上)。

另一方面,如果他能说出类似的东西:"有些算法可以非常有效地实现,并且易于组装,远远超过大多数高级编程语言中的可能性#34那么他的陈述是有道理的......

虽然有趣的文字......

答案 2 :(得分:0)

如果您在内存和/或执行时间方面有严格的限制,您可能会被迫使用汇编语言。

高级语言通常需要一个运行时库,它可能太大而无法放入程序内存中。

考虑时间关键的驱动程序。例如,中断服务程序。如果例程只有几纳秒可用,汇编语言可能是唯一可行的选择。

答案 3 :(得分:0)

this怎么样?您需要编写一些汇编代码才能访问系统寄存器和表。但是设置已完成,没有CPU指令被执行(所有内容都是由复杂的CPU异常处理机制完成的)然而事情是Turing-complete并且可以“运行”程序。