从机器语言角度看字符串

时间:2016-05-20 20:48:05

标签: string assembly architecture compilation

从低级程序集和体系结构的角度来看,指令中的字符串如何处理与数字不同?我试图理解编译器如何在线课程中起作用,但最终还是不太了解具有64位字长的架构如何理解和关联包含一个字符串但不包含一个字符串的Unicode的多个字符。适合一条指令。字符串是否具有完全独立的指令,这些指令基于在字符串末尾寻找空字节的体系结构?我相信,了解这一点会使编译器更容易理解。谢谢!

1 个答案:

答案 0 :(得分:1)

低级机器指令语言有一些字符串指令(如CMPS,MOVS等)。这些指令以及REP,REPNZ等前缀都是以用户知道字符串a-priori的长度为基础的,因此有效地对每个字节/字/双字/ qword重复执行相同的指令。这些指令比手动编码的循环更快,因为这些指令还会触发内存的预读。

这些不假设任何NULL终止条件或某些其他终止条件。这些也完全不了解被视为字符串的数据是Unicode,ASCII还是任何此类特定格式。这些都是特定于语言的惯例。

有许多编程技术可以快速确定字符串的长度,只要它由使用相同指令集的已知标记(NULL或“完全停止”)终止。

因此,总而言之,低级体系结构侧重于自动执行顺序存储的数据处理过程的重复性,但不会以任何其他方式将字符串与数字“区别对待”。

相信这有帮助。