您可以在HLL中实现的任何算法都可以在汇编中实现。另一方面,您可以在汇编中实现许多算法,这些算法无法在HLL中实现。 - Randall Hyde
我在前言中发现了这篇关于集会的书。这本书在这里:https://courses.engr.illinois.edu/ece390/books/artofasm/fwd/fwd.html#109
有谁知道这种算法的例子?
答案 0 :(得分:2)
有一种感觉很简单:在最坏的情况下,你可以在HLL中编写一个仿真器,然后在那里运行算法。但是这有点作弊,因为现在HLL并没有直接实现算法。
许多HLL无法做到的具体例子(或者可能在实践中,但不能保证他们能够做到),是直接实现XOR链表。在许多语言中,你不能使用异或指针,和/或即使你可以(或考虑垃圾收集)它也没有意义。当然,您可以通过整数ID引用每个节点并对其进行异或,但这是一种变通方法,而不是直接实现。
虽然许多(特别是较旧的)语言提供goto
,但HLL在实现非结构化控制流方面经常遇到问题。这意味着您可能必须跳过箍来实现状态机(使用循环中的开关或其他任何东西),而不是让程序计数器隐含状态。
还有许多算法和数据结构依赖于典型HLL中不存在的操作,例如popcnt
或lzcnt
,可以再次模拟,但是一切都可以。
答案 1 :(得分:1)
这是完全错误的。
您可以在任何图灵完整编程语言中实现任何算法(在CS的意义上)。
另一方面,如果他能说出类似的东西:"有些算法可以非常有效地实现,并且易于组装,远远超过大多数高级编程语言中的可能性#34那么他的陈述是有道理的......
虽然有趣的文字......
答案 2 :(得分:0)
如果您在内存和/或执行时间方面有严格的限制,您可能会被迫使用汇编语言。
高级语言通常需要一个运行时库,它可能太大而无法放入程序内存中。
考虑时间关键的驱动程序。例如,中断服务程序。如果例程只有几纳秒可用,汇编语言可能是唯一可行的选择。
答案 3 :(得分:0)
this怎么样?您需要编写一些汇编代码才能访问系统寄存器和表。但是设置已完成,没有CPU指令被执行(所有内容都是由复杂的CPU异常处理机制完成的)然而事情是Turing-complete并且可以“运行”程序。