从机器语言的角度看字符串
Strings from a machine language perspective
从低级汇编和体系结构的角度来看,字符串在指令中的处理方式与数字有何不同?我试图通过在线课程了解编译器的工作原理,但最终不太了解字长为 64 位的体系结构如何理解和关联包含一个字符串但不适合的 Unicode 多个字符一条指令。基于在字符串末尾寻找空字节的体系结构,字符串是否具有完全独立的指令?我相信,了解这一点会使编译器更容易理解。谢谢!
低级机器指令语言有一些字符串指令(如 CMPS、MOVS 等)。这些指令以及 REP、REPNZ 等前缀都基于用户先验知道字符串的长度,因此这些指令实际上对每个 byte/word/dword/qword 重复执行相同的指令。这些指令比它们的手动编码循环更快,原因很简单,因为这些指令还会触发内存预读。
这些不假定任何 NULL 终止条件或其他一些终止条件。他们也完全不了解被视为字符串的数据是 Unicode、ASCII 还是任何此类特定格式。这些都是特定于语言的约定。
有许多编程技术可以快速确定字符串的长度,只要它使用相同的指令集以已知标记(NULL,或"full-stop")终止即可。
因此,总而言之,低级架构侧重于自动重复顺序存储的数据处理过程,但不会以任何其他方式处理数字中的字符串 "differently"。
相信这会有所帮助。
从低级汇编和体系结构的角度来看,字符串在指令中的处理方式与数字有何不同?我试图通过在线课程了解编译器的工作原理,但最终不太了解字长为 64 位的体系结构如何理解和关联包含一个字符串但不适合的 Unicode 多个字符一条指令。基于在字符串末尾寻找空字节的体系结构,字符串是否具有完全独立的指令?我相信,了解这一点会使编译器更容易理解。谢谢!
低级机器指令语言有一些字符串指令(如 CMPS、MOVS 等)。这些指令以及 REP、REPNZ 等前缀都基于用户先验知道字符串的长度,因此这些指令实际上对每个 byte/word/dword/qword 重复执行相同的指令。这些指令比它们的手动编码循环更快,原因很简单,因为这些指令还会触发内存预读。
这些不假定任何 NULL 终止条件或其他一些终止条件。他们也完全不了解被视为字符串的数据是 Unicode、ASCII 还是任何此类特定格式。这些都是特定于语言的约定。
有许多编程技术可以快速确定字符串的长度,只要它使用相同的指令集以已知标记(NULL,或"full-stop")终止即可。
因此,总而言之,低级架构侧重于自动重复顺序存储的数据处理过程,但不会以任何其他方式处理数字中的字符串 "differently"。
相信这会有所帮助。