equ & $ & 数组
取得内容长度
Section titled “取得内容长度”使用示例代码解说
section .data data: db "1234" data_len: equ $ - data one: equ "one"$
$在此时表示当前的内存位址,比如当前在0x1204,$就是0x1204
data如果是0x1200,0x1204 - 0x1200就是其长度
但这种情况$必须紧接着变量才是正确位址
equ即为C语言的define,将一个内容取代成另一个内容
比如稍后我们使用one会被取代成”one”,此动作只有取代不分配内存空间
使用align 16或任意数字,会将下一行的内容对齐到特定大小(byte)
section .datapre: db "1"align 16data: db "1234"data2: db "5678"内存一开始有一个”1”,然后补15个0,“12345678”
align的作用范围只有下一行而已
数组是一段连续的内存空间,只要我们在数据段连续定义就是数组
arr: dq "one", 0 dq "two", 0; orone: dq "one", 0two: dq "two", 0要注意的是任何字串丢去C/C++都需要以\0结尾
此范例dq表示一个元素是qword 8 bytes长度
接着将数组开头载入到寄存器,每次读取+8或扫描到0都可以作为判断准则