我的任务是将使用NASM的汇编程序转换为GAS。不幸的是,有很多不匹配的语句。我已经转换了其中的一些,但是我仍然在如何转换这个语句上遇到问题。
min resw 1发布于 2014-12-03 16:23:11
保留一个单词(初始化器为0)非常简单:
min: .word 0对于x86,.word是16位的。适用于其他尺寸:.byte、.long、.quad。
如果你想保留一大块,比如说50个单词,使用.fill或.space指令:
buff1: .fill 50, 1, 0 # count, size, value
buff2: .space 50, 0 # count (bytes), value (defaults to 0)对于重复模式大于1字节的初始化器,.dcb.size接受一个值和长度:
int_array: .dcb.l 50, 12345 # 32-bit integer 12345 repeated 50 times发布于 2014-12-03 16:36:02
您可以尝试:
.lcomm min, 2或
.comm min, 2在bss段中留出两个字节(一个字)的空间。bss部分的要点是,加载程序将分配空间,并在加载时将内容设置为零,但它不会占用磁盘上文件的空间。
如果您只需要从使用min的文件内部引用.lcomm,则使用.lcomm。如果您需要从其他文件引用min (这样链接器将使其可用于其他文件),则使用comm。
如果您更喜欢使用数据部分,这将在文件中放置零并占用磁盘空间,那么放在数据部分中应该是可行的:
min:
.fill 2https://stackoverflow.com/questions/27266676
复制相似问题