我的任务是将使用NASM的汇编程序转换为GAS。不幸的是,有很多不匹配的陈述。我已经转换了其中一些,但我仍然无法解决如何转换此声明
min resw 1
提前致谢。 :)
答案 0 :(得分:1)
保留一个字非常简单,只需使用:
min .word 0
保留一个单词并将其设置为零。
如果你想保留一个大块,比如说50个单词,很多装配工都允许这样的东西:
buff .byte 50(0)
但我不知道gas
是否支持这一点。 似乎提供了与.fill
和.space
指令类似的功能:
buff1 .fill 50, 1, 0 ; count, size, value
buff2 .space 50, 0 ; count (bytes), value (defaults to 0)
如果您不关心设置值,某些汇编程序还会允许.word ?
或.byte 50(?)
之类的内容。同样,gas
可能支持也可能不支持。
在任何情况下,您的具体示例似乎都不需要这些。
答案 1 :(得分:0)
你可以尝试:
.lcomm min, 2
或
.comm min, 2
在bss部分中留出两个字节(一个字)的空间。 bss部分的重点是加载器将在加载时分配空间并将内容设置为零,但它不会占用磁盘上文件的空间。
.lcomm
,如果您只需要在使用min
的文件中引用.lcomm
。 comm
是你需要从其他文件中引用min
(因此链接器会将其提供给其他文件)。
如果您更喜欢使用数据部分,它会将零放在您的文件中并占用磁盘空间,那么放置在数据部分中的部分应该可以正常工作:
min:
.fill 2