跳轉到內容

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 屬性返回的值相同,也可能不同。

華夏公益教科書