汇编编程中的代码注释与动态内存分配
1. 代码注释指令
在编程中,为了便于调试和其他目的,有一组指令可用于注释代码,其中最重要的是 .type
指令。对于用 .globl
标记的符号, .type
指令能让链接器知道该符号的类型,是函数(指定 @function
)还是数据(指定 @object
)。
以下代码将 myvar
标记为数据地址, myfunc
标记为函数地址:
.globl myvar, myfunc
.type myvar, @object
.type myfunc, @function
.section .data
myvar:
.quad 0
.section .text
myfunc:
# Do things
ret
在函数内部,有一组被称为 CFI(控制流完整性)的指令,它们会向调试器告知你在函数中的位置。这些指令相当复杂,但如果你看到以 .cfi_
开头的指令,它们本质上是传递给调试器和其他工具的信息项,用于描述程序的预期流程。调试器可利用这些信息,在任何给定时刻为你提供更多关于程序状态的信息,安全工具也可借此验证是否存在异常情况。不过,这些指令的复杂性让程序员觉得麻烦。它们由编译器插入,用于为调试器和性能分析器添加上下文信息。
练习
可以对之前编写的一些代码