Smalltalk 如何操作调用堆栈帧(thisContext)?

2023-12-26

Smalltalk 对象thisContext看起来奇怪又奇妙。我不明白它是什么以及它是如何工作的。甚至它如何实现延续。

对于 C 的调用堆栈,我可以轻松想象它是如何实现和工作的。但对于这个……我不能。请帮助我理解它。


我认为这不是一个简单的问题。堆栈在图像中通过 MethodContext 实例具体化。 MethodContext 可以有一个发送者,它是另一个 MethodContext。那个可以有另一个......生成一整堆。 MethodContext 在执行 CompiledMethod 时由 VM 实例化(也在语言中具体化)。

MethodContext如何映射到C堆栈,这取决于VM。 StackVM(CogVM 位于 StackVM 之上)正是一个能够更好地将 MethodContext 映射到 C 堆栈的 VM。

除了卢卡斯说的蓝皮书之外,检查一下

http://www.mirandabanda.org/cogblog/ http://www.mirandabanda.org/cogblog/检查左边的帖子...

我建议你去询问http://lists.squeakfoundation.org/mailman/listinfo/vm-dev http://lists.squeakfoundation.org/mailman/listinfo/vm-dev

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Smalltalk 如何操作调用堆栈帧(thisContext)? 的相关文章

  • Scala:分隔延续解释 - 不

    对延续的概念感兴趣 我开始阅读维基 帖子 并找到了这个 简单 的例子 reset shift k Int gt Int gt the continuation k will be the 1 below k 7 1 result 8 如果不
  • Pharo Smalltalk 中 = 和 == 有什么区别?

    有什么区别 and 在 Pharo Smalltalk 中 他们叫什么名字 一个isEqual和另一个 equality inequality deep equality inequality shallow 需要考虑的一件重要的事情是 不
  • Chrome 有内置的调用堆栈吗?

    在 Visual Studio 中 我习惯于在任何断点处显示调用堆栈 Chrome 是否具有调用堆栈功能 可以让我查看断点之前的函数 如果没有 是否有替代方案 适用于 Chrome 的第三方解决方案 供开发人员用来查看哪些函数导致了断点 编
  • Visual Studio 调用堆栈窗口不显示文件名

    我正在 Visual Studio 中调试程序 我想知道为什么我的程序会传递到特定单元 源代码文件 中的函数旁边 我以为调用堆栈会显示这一点 但事实似乎并非如此 此外 可显示条目列表甚至没有提及文件名 显示模块名称 显示参数类型 显示参数名
  • 用于 Web 应用程序的 GetEntryAssembly

    Assembly GetEntryAssembly 不适用于网络应用程序 但是 我真的需要这样的东西 我使用一些在 Web 和非 Web 应用程序中使用的深度嵌套代码 我当前的解决方案是浏览 StackTrace 以查找第一个调用的程序集
  • 如何仅使用键盘在 Visual Studio 中导航调用堆栈?

    My current solution is to hit AltD W C which navigates via the menus to the call stack and then I can use the arrows to
  • 调用堆栈窗口始终为空

    被引入调用堆栈窗口后这个 ASP NET MVC 视频 http channel9 msdn com blogs matthijs aspnet mvc 2 basics introduction by scott hanselman我试图
  • “范围错误:超出最大调用堆栈大小”为什么?

    如果我跑 Array apply null new Array 1000000 map Math random 在 Chrome 33 上 我得到 RangeError Maximum call stack size exceeded Wh
  • 从 Smalltalk 中的集合生成所有组合

    我已经看到这个问题在 C 和其他语言中得到解决 但在 Smalltalk 中却没有得到解决 我有3个集合 例如 a 3 4 5 b 4 1 2 c 5 2 3 我需要做出所有可能的组合 i 即 3 4 5 3 4 2 3 4 3 3 1 5
  • 与 Java 内存管理(栈和堆)混淆

    这可能听起来很愚蠢 但我仍然不清楚 Java 堆栈和内存堆 我通过学习了解到的情况如下 1 所有方法调用都在堆栈上 2 本地分配的所有内存都在内存堆上 这一点不是很清楚 3 new 运算符分配的所有内存 无论是在方法中还是在类中 都位于内存
  • Smalltalk 中的 self 和 self 有什么区别?

    在 Smalltalk 中 方法体中经常出现两个术语 self and yourself 它们之间有什么区别 保留字self是一个伪变量 不能分配给它 它引用使用它的方法的当前接收者 另一方面yourself是一条消息 您可以发送给任何对象
  • 在没有 GUI 的服务器上运行 Smalltalk?

    我有一个相当明显的问题 我想在生产服务器上运行 Smalltalk 而不使用图形界面 VW 或 Pharo 甚至 Squeak 可能实现这一点吗 我有一个没有 X 的 VPS 托管 并且希望在 Smalltalk 上运行一些网站 同时使用成
  • 如何获取 iOS 中任意线程的正确帧指针?

    获取帧指针的方法 在 iPhone 5s 设备 Xcode 7 上运行的演示应用程序上 我尝试获取frame pointer of an 随意的线程使用thread get state http web mit edu darwin src
  • Groovy 中如何使用 GOTO 语句?

    我看到了这个关于 Scala 延续的好博客文章 http blog richdougherty com 2009 03 goto in scala html 模仿 一个GOTOScala 语言中的语句 阅读更多关于此处继续 http www
  • 使用callstack在C中实现堆栈数据结构?

    我对 C 下内存结构的理解是 程序的内存与堆栈和堆分开 每个堆栈和堆都从块的两端生长 可以想象分配所有 RAM 但显然抽象为某种操作系统内存片段管理器 堆栈设计用于处理局部变量 自动存储 堆设计用于内存分配 动态存储 编者注 有一些 C 实
  • 评估树遍历递归算法中是否可能出现堆栈溢出错误 (Java)

    从理论上 即不实际执行 确定某种树遍历递归算法将在 Java 中产生堆栈溢出的情况的最佳方法是什么 为了澄清我的问题 请考虑以下示例 给定一个用 Java 实现的简单二叉树 public class Node private int val
  • 如何在没有副本的情况下向后流式传输集合?

    我想知道如何向后流式传输集合无副本在法罗 吱吱声中 例如 要流式传输 1 2 3 so stream next回报3 then 2 then 1 我知道我可以使用collection reversed readStream but reve
  • 是否可以从命令行运行 Smalltalk 脚本?

    我发现了一个 可能过时且不正确 2004 年的博客文章 http www ianbicking org where smalltalk went wrong html它声称不可能从命令行运行 Smalltalk 脚本 从那时起有什么变化吗
  • 是否可以在不展开调用堆栈的情况下终止 Windows XP 上的 C++ 应用程序?

    我的理解是 当您在 Windows XP 中通过任务管理器终止 C 应用程序时 该应用程序仍然 干净 地被破坏 即调用堆栈将展开并且所有相关的对象析构函数将被调用 不知道我这里的理解是否有误 是否可以立即终止这样的应用程序而不展开堆栈 例如
  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m

随机推荐

  • 展平相同类型的嵌套列表

    假设我想展平相同类型的嵌套列表 例如 ListA Element A Element B ListA Element C Element D ListB Element E Element F ListA包含相同类型的嵌套列表 ListA
  • 在 YAML 中构建字典项数组?

    基本上尝试在 yaml 中执行一些可以使用此 json 完成的操作 models model a type x bunch of properties model b type y bunch of properties 到目前为止 这就是
  • XD 代理 Facebook

    我正在使用 facebook connect 登录我的网站 在我的 html 页面中我编写代码 div div
  • Jenkins 和 Artifactory 的 Nuget 登录错误

    遇到问题Nuget Jenkins and 人工工厂 似乎无法获取Jenkins管道来识别Nuget配置 什么在起作用 使用我正在尝试阅读的帐户登录神器 查看我尝试访问的存储库和工件 使用 nuget 命令行访问存储库并在出现提示时输入用户
  • 返回新的 LINQ 对象

    我想编写 LINQ 它返回新对象 string int 包含 字符串 位置名称 int 位置计数 Output PositionA 8 PostionB 12 PostionC 13 这是我到目前为止所拥有的 public List
  • Android Studio 2022.2.1:网络检查器数据不可用

    我正在使用最新最好的 Android Studio 版本 Android Studio Flamingo 2022 2 1 Build AI 222 4459 24 2221 9862592 built on March 31 2023 R
  • 按索引合并两个数据帧

    我有以下数据框 gt df1 id begin conditional confidence discoveryTechnique 0 278 56 false 0 0 1 1 421 18 false 0 0 1 gt df2 conce
  • 如何在 webView 中启用 javascript

    在android中 如果我在webView中使用javascript 它会强制关闭 是否有可能在 webView 中使用 java 脚本 请帮忙 01 10 10 08 51 513 W dalvikvm 5994 JNI WARNING
  • 连续 WebJobs 和 CancellationToken

    我不明白取消令牌和网络作业背后的机制 我知道我可以使用Microsoft Azure WebJobs WebJobsShutdownWatcher Token获取令牌并做出反应token IsCancellationRequested例如
  • 获取C# WinForms App的应用程序图标

    我已使用 项目属性 选项卡为 C WinForms 应用程序分配了一个图标 该图标在构建时与程序清单一起提供 有没有办法获得System Drawing Icon在运行时获取此图标的对象 而无需再次将其嵌入资源中 我已经做了我的研究 有一种
  • Laravel Echo Server、Redis、Socket.IO:似乎无法使它们工作

    我正在使用 Laravel 开发实时应用程序 由于我不想使用 Pusher 所以我尝试使用 websockets 来工作Laravel 回声服务器 https github com tlaverdure laravel echo serve
  • firebase规则:如何根据用户角色限制访问

    我是 Firebase 新手 正在尝试了解安全规则 为此 我正在实现项目 团队成员 任务的典型功能 每个项目都会有一个团队负责人 多个成员和多个任务 这是我试图实现的结构和规则 也称为要求 Members each member has d
  • Rcpp 函数比 Rf_eval 慢

    我一直在开发一个包 它使用 Rcpp 在一组大型医学成像文件上应用任意 R 代码 我注意到我的 Rcpp 实现比原始的纯 C 版本慢得多 我追踪了通过 Function 调用函数与原始 Rf eval 的区别 我的问题是为什么性能会下降近
  • Python 中的成对集交集

    如果我有可变数量的集合 让我们称这个数字为n 最多有m每个元素 计算所有集合对的成对交集的最有效方法是什么 请注意 这与所有的交集不同n sets 例如 如果我有以下集合 A a b c B c d e C a c e 我希望能够找到 in
  • 在 Go 中执行 CMD 的 'cd' 命令

    我想使用 Go 和 exec 库转到某个路径 c 然后运行 exe 文件 当我运行 Go 代码时 它会给出 exec cd 文件不存在 The cdcommand 是 shell 的内置命令 无论是 bash cmd exe PowerSh
  • 如何在 JavaScript 中创建内存泄漏并监控内存使用情况

    我正在尝试使用下面的代码片段在 JavaScript 中分配内存来研究内存泄漏 消耗 然而 performance memory usedJSHeapSize 总是显示相同的数字 在我的例子中是 10000000 尽管动态创建元素并附加到
  • 有没有办法在调用诺基亚反向地理编码 API 时关联响应和查询?

    我在用着反向地理管理者的方法诺基亚 places 搜索 manager HERE API 检索有关坐标的信息 在我的情况下 当显示一点信息时 它工作得很好 但是 当我有多个点时 我的所有点都会获取最后一个点的信息 事实上 我不使用 info
  • codeigniter 3,文件上传给出 HTTP ERROR 500

    我是 CodeIgniter 3 框架的新手 所以我对这个错误有点了解 基本上 当我尝试上传图像时 它会抛出 HTTP ERROR 500 并且服务器上的错误日志中没有错误 这是控制器的功能 if POST config upload pa
  • 查全率与查准率图

    我正在尝试绘制精确度与召回率的图表 这是我的分类报告 我不知道如何绘制显示这些的图表 这是我的分类报告代码 from sklearn metrics import classification report print print Conf
  • Smalltalk 如何操作调用堆栈帧(thisContext)?

    Smalltalk 对象thisContext看起来奇怪又奇妙 我不明白它是什么以及它是如何工作的 甚至它如何实现延续 对于 C 的调用堆栈 我可以轻松想象它是如何实现和工作的 但对于这个 我不能 请帮助我理解它 我认为这不是一个简单的问题