汇编语言中的设计模式

时间:2010-02-02 09:31:48

标签: design-patterns assembly

基本上,有没有?

我很想他们确实存在。例如,template method可以实现为一系列“跳转”,其中跳转的目标是“外部”指定的。 Singleton将只是内存/代码等中众所周知的位置。

我绝不是装配专家,所以这些例子可能会变得完全不可能,但仍然存在。

5 个答案:

答案 0 :(得分:12)

汇编语言更多地是关于“技巧”而不是设计模式。虽然高级设计模式仍然可以被考虑并发挥作用,但大多数组装人员更关心时钟周期和利用指令技巧。

例如,在x86中,执行xor eax, eax的速度比执行mov eax, 0的速度快。

我正在制作的这一点(感谢你的赞成票!)是使用汇编语言,您希望更多地关注细节而不是大型设计图片。就像你不会专注于高级语言的执行速度的细节一样。

答案 1 :(得分:5)

Google的第一个定义:“设计模式是解决软件设计中常见问题的一般可重用解决方案”。

按照这个标准我会说他们肯定存在。

首先想到的是跳台。

答案 2 :(得分:1)

适用于OO设计模式:

人们通常实现更高级别的语言结构,如继承多态,并将它们用作构建块,以实现其在设计模式中的意图。但是,也许更容易为平台找到c或c ++编译器并使用设计模式而无需实现基本的oo功能。

答案 3 :(得分:0)

如果所有层都没有设计模式,那么您应该考虑设计专利。 因为说“我只是将代码写得非常详细”是错误的谦虚,因为“要处理的细节太多,以至于软件工程过程的工业化太聪明了,无法适应这种狭窄的堆栈溢出”。

答案 4 :(得分:0)

一个可能的示例是如何编写循环:Why are loops always compiled into "do...while" style (tail jump)?

或者SIMD使用未对齐的第一个和最后一个向量,以及用于主循环体的对齐向量对矢量(例如,具有不重叠src,dst的memcpy)进行矢量化。如果对齐方式和/或大小不是16字节的整数倍,则存在部分重叠,但这很好。