从Ada中的内存地址读取值

从Ada中的内存地址读取值,ada,Ada,我试图写一个程序,给定一个内存地址和数据类型,将显示该内存位置的数据值 我认为最好的方法是在通用包地址\u to\u Access\u转换中使用to\u指针函数,但每次尝试使用它时都会出现错误: 所选组件“地址到访问转换”中的前缀无效 我找不到任何实际使用地址到访问转换的例子。我可能完全走错了方向 有人知道如何使用上面的包将地址转换为访问类型,更重要的是,知道如何访问给定地址的数据以显示到控制台吗 编辑 我在研究中发现的最有效的解决方案是使用以下方法: for X'Address use du

我试图写一个程序,给定一个内存地址和数据类型,将显示该内存位置的数据值

我认为最好的方法是在通用包地址\u to\u Access\u转换中使用to\u指针函数,但每次尝试使用它时都会出现错误:

所选组件“地址到访问转换”中的前缀无效

我找不到任何实际使用地址到访问转换的例子。我可能完全走错了方向

有人知道如何使用上面的包将地址转换为访问类型,更重要的是,知道如何访问给定地址的数据以显示到控制台吗


编辑 我在研究中发现的最有效的解决方案是使用以下方法:

for X'Address use dummy_address;
唯一的问题是,在代码中的这一点上,我没有计算出虚拟地址是什么,并且该语句只在声明时起作用,在“开始”之前,我找到了一种方法来解决这个问题,尽管使用块编程:

dummy_address := base_address + offset;

Dummy_String:
declare
  subtype Xdummy is Integer;
  S : Xdummy;
  for S'Address use dummy_address;
begin
  --More code here
end Dummy_String;

发布一个简单完整的代码示例,展示您的问题中的错误。我想您可能没有遇到一个错误,您是否实例化了通用包?我认为尝试直接使用泛型包而不是实例化它可能会导致“无效前缀”错误<代码>地址到访问转换可能是实现这一点的最好和最干净的方法,但像Brian一样,我希望看到你失败的代码,然后我们可以帮助你纠正错误。实际上我一直在努力从哪里开始,我对Ada还是新手。我用我找到的解决方案更新了我的帖子。我仍然想学习如何使用Address\u to\u Access\u转换包,因为它在以后可能会很有用,所以我将研究如何实例化它。谢谢您的建议。解决方案将作为答案发布,而不是编辑原始问题。你可以自己回答自己的问题。