gpt4 book ai didi

assembly - 在 GNU 汇编器中声明一个固定长度的填充字符串

转载 作者:行者123 更新时间:2023-12-01 09:07:38 25 4
gpt4 key购买 nike

我正在尝试在汇编程序中以固定大小的结构定义一些数据。我想声明固定字节数的字符串数据,用字符串初始化。在 C 语言中是:

char my_string[32] = "hello";

这是 32 个字节,并在末尾填充了许多零。

汇编程序中的等价物是什么?我知道我可以手动计算字符串的长度并声明必要的零字节数以填充为 32,例如:

my_string:
.asciz "hello"
.zero 26

但是如果字符串是动态定义的,例如从外部定义或包含,我该怎么做?

最佳答案

我想我会为此使用带有本地标签的宏。例如:

    .macro padded_string string, max
1:
.ascii "\string"
2:
.iflt \max - (2b - 1b)
.error "String too long"
.endif

.ifgt \max - (2b - 1b)
.zero \max - (2b - 1b)
.endif

.endm

...这样使用:

my_string:
padded_string "Hello world!", 16

(如果字符串的长度正好是 max 个字符,则这具有类似 C 的行为,即不添加终止 0。要确保字符串终止,只需更改 .ascii.asciz.)

关于assembly - 在 GNU 汇编器中声明一个固定长度的填充字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com