什么"。="用AT& T汇编语言表示?

时间:2017-03-24 16:30:42

标签: assembly x86 operating-system

我正在尝试编写启动程序。内容如下:

.text
balabala
.globl _start
_start:
balabala

.=_start+510
.byte 0x55,0xaa

顺便说一句,我也无法理解" .byte 0x55,0xaa"手段? 它的功能是什么?它是如何工作的? 细节越多越好。

1 个答案:

答案 0 :(得分:2)

汇编程序将数据和指令转换为字节。与编译器不同,汇编指令和内存之间通常有1:1的匹配。的。传统上,符号用于表示当前程序段开头的当前偏移量。

最常用于确定对象的大小。

使用您修改的示例:

SOMEDATA:
    .byte 0x55,0xaa

这将使用值55和AA分配2个字节,并将内部标签SOMEDATA分配给包含该数据的位置。

如果我之后立即添加

SOMEDATA:
    .byte 0x55,0xaa
SOMEDATALENGTH = . - SOMEDATA

将定义一个符号,给出分配的字节数(在本例中为2)。一些汇编程序具有复杂的宏功能,可以描述精细的数据结构。用。在建立这样的结构时很常见。

有些汇编程序允许赋值给。符号如上。

_start:
.=_start+510
 .byte 0x55,0xaa

这会导致分配器增加510个字节。然后,在给定值55和AA的位置_start和2个字节之间创建510字节间隙。通常间隙用零填充,但这取决于汇编程序。