我在数据部分定义了一个字符串标签,如下所示:
.data
array:
.string "Hello World!"
我的问题是,如何检索字符串的长度(11)?我是否必须使用for循环并遍历字符串标签占用的内存区中的每一位,直到我找到一个设置为0的字符(4字节的整数区)?
发布于 2020-11-06 01:26:28
获取字符串后面字节的地址,减去array
的地址。
这可以通过在字符串的末尾放置另一个标签,或者使用引用当前地址的.
来完成。示例:
.data
str1:
.string "Hello"
str1_end:
str1_len = (str1_end - str1)
str2:
.string "Goodbye"
str2_len = (. - str2)
.text
.global foo
foo:
movl $str1_len, %eax
movl $str2_len, %ebx
这段代码组装成
movl $6, %eax
movl $8, %ebx
顺便说一句,如果您的字符串确实是常量,请考虑将其放在.section .rodata
中而不是.data
中。
https://stackoverflow.com/questions/64707508
复制相似问题