2017-12-18 340 views
-2

一个示例代码,我看到类似下面代码:

section .data 
    db 'hello' 
    db 'h', 'e', 'l','l','o' 
    data_segment_size equ $-$$ 

为什么data_segment_size等于25?我知道$和$$表示什么,但根据我的书我无法弄清楚为什么这个变量是25。也许这是该书的错误。

+0

这些问题与我的问题没有直接关系。我必须象征,$和$。 – Alireza

+1

当然,你可以阅读两种不同的结构,然后推断如何使用另一种结构。 –

+0

如果你有可复制的例子(工作源,由NASM编译,并且产生值'25'),你可以使用列表选项('-l ')来查看'.data '部分被翻译成机器码字节,并且它们产生了25个字节。 – Ped7g

回答

1

简短的回答:

$的意思是 “这里的地址”。

$$表示“当前部分的开始地址”。

所以$-$$的意思是“当前节的大小”。

对于你给出的例子,这将是10,因为有10个字节的数据给出。

+0

它是如何等于25? – Alireza

+1

也许你还没有在'.data'部分看到其他的东西。你已经发布了[mcve]吗? –

+0

这是书中的一个例子。它表示这个变量是25,我不知道如何。 – Alireza