NASM to GAS:对应于GAS的重新启动

时间:2014-12-03 08:16:27

标签: nasm gas

我的任务是将使用NASM的汇编程序转换为GAS。不幸的是,有很多不匹配的陈述。我已经转换了其中一些,但我仍然无法解决如何转换此声明

min resw 1

提前致谢。 :)

2 个答案:

答案 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的文件中引用.lcommcomm是你需要从其他文件中引用min(因此链接器会将其提供给其他文件)。

如果您更喜欢使用数据部分,它会将零放在您的文件中并占用磁盘空间,那么放置在数据部分中的部分应该可以正常工作:

min:
    .fill 2