如何解决如何确定常量字符串的长度?
我在数据部分中定义了一个字符串标签,如下所示:
.data
array:
.string "Hello World!"
我的问题是,我将如何检索字符串(11)的长度?我是否必须使用for循环并遍历字符串标签所占用的内存部分中的每一位,直到找到设置为0的字符(4字节的整数部分)?
解决方法
获取字符串后面的字节地址,并减去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
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。