跳转到内容

Ada 编程/属性/'代码地址

来自维基教科书,自由的教科书

'Address 属性可以在 Ada 95 和 Ada 2005 中应用于子程序,但其预期效果似乎是提供一个地址值,该地址值可用于通过地址子句调用子程序,如以下示例所示

procedure K is ...

procedure L;
for L'Address use K'Address;
pragma Import (Ada, L);

然后,对 L 的调用将导致对 K 的调用。在 Ada 83 中,由于没有对子程序的访问值,因此这是一个获取间接调用的效果的常见解决方法。GNAT 实施了上述 Address 的使用,并且示例代码中说明的技术可以正常工作。

但是,出于某些目的,获取子程序生成的代码的起始地址非常有用。在某些体系结构中,这并不一定与上面描述的 Address 值相同。例如,Address 值可能引用子程序描述符而不是子程序本身。

'Code_Address 属性只能应用于子程序实体,它始终返回指定子程序生成的代码的起始地址,这可能与由相应的 'Address 属性返回的值相同,也可能不同。

华夏公益教科书