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)? 的相关文章

  • Visual Studio 调用堆栈窗口不显示文件名

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

    许多语言都有用于编写非常小的网站或 Web 服务的微框架 例如用于 Python 的 Flask 或用于 Ruby 的 Sinatra 在 Squeak 上 似乎没有任何类似的东西 伊利亚特 海边 和 AIDA 都非常重 只是提供了一点服务
  • 如何提取定界延续(重置/移位)以供将来在 Haskell 中使用?

    以下是使用分隔延续 重置 移位 的简单示例 import Control Monad import Control Monad Trans import Control Monad Trans Cont test Integer test
  • C++ 程序中非常奇怪的堆栈溢出

    我前段时间写了一个程序 Mac OS X C SDL FMOD 它的性能相当不错 但最近我想扩展它的功能并添加一些更多的代码 现在 当我运行它并尝试测试新功能时 程序因 SIGABRT 崩溃 查看调试器 在函数堆栈上我看到 kill 杀死
  • 当调用函数时,堆栈帧真的会被推入堆栈吗?

    我很长一段时间以来所学到的方法是 当我运行程序时 立即进入堆栈的第一件事是 main 方法的堆栈帧 如果我从 main 中调用一个名为 foo 的函数 那么一个堆栈帧 即局部变量 自动对象 的大小 和参数也会被推入堆栈 然而 我遇到了一些与
  • Pharo Smalltalk 和 mySql

    我正在寻找知道如何连接 Pharo Smalltalk 和 mySql 的人 我只想做一些基本的事情 比如 从名称中选择 然后将结果读入 Pharo 有人对这个有了解吗 如果你有一个屏幕视频那就太好了 我会给你买杯啤酒 查看DBXTalk
  • .STACK 未在 MASM 中分配正确的大小

    基于微软MASM文档 https learn microsoft com en us cpp assembler masm dot stack view vs 2019 STACK指令的用法是 与 MODEL 一起使用时 定义堆栈段 段名称
  • Pharo Smalltalk 的类似 Sinatra 的网络框架 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有Sinatra http www sinatrarb com 类似 Pharo 的网络框架 或者
  • 为什么这个类/实例变量没有被初始化?

    我正在尝试使用 gnu smalltalk 在以下带有变量的简单类的代码中 我发现它没有初始化为给定值 Object subclass Myclass mainval mainval 555 getmainval mainval gc My
  • 在 Smalltalk 中重构 if 链而不发生类爆炸

    由于 Smalltalk 不鼓励使用 caseOf 那么有哪些替代方案可以实现以下情况而不导致类爆炸 self condition1 ifTrue self actionForCondition1 ifFalse self conditio
  • 异常调用堆栈被截断,没有任何重新抛出

    我有一个不寻常的情况 我有一个非常简单的异常被抛出并在同一方法中捕获 它不会被重新抛出 天真的程序员通常会遇到这样的问题 然而它的 StackFrame 只包含一个当前方法 它看起来是这样的 at my class MyMethod in
  • Pharo 5 无头模式下的调试

    我正在无头模式下使用 RFB 运行 pharo 5 海边 pharo vm display null vm sound null app pharo5 Pharo5 0 image no quit 在本地运行良好 带有 XFCE 的 Ubu
  • 用 Haskell 解释 Parigot 的 lambda-mu 演算

    我们可以用 Haskell 来解释 lambda 演算 data Expr Var String Lam String Expr App Expr Expr data Value a V a F Value a gt Value a int
  • 评估树遍历递归算法中是否可能出现堆栈溢出错误 (Java)

    从理论上 即不实际执行 确定某种树遍历递归算法将在 Java 中产生堆栈溢出的情况的最佳方法是什么 为了澄清我的问题 请考虑以下示例 给定一个用 Java 实现的简单二叉树 public class Node private int val
  • 使用 MonadRef 实现 MonadCont

    有一个众所周知的问题我们不能使用forall类型在Cont返回类型 https stackoverflow com questions 7178919 how to make callcc more dynamic 7180154 7180
  • Smalltalk:原语是如何实现的?

    我知道一切都是对象 您可以向 Smalltalk 中的对象发送消息来执行几乎所有操作 现在我们如何实现一个对象 内存表示和基本操作 来表示原始数据类型 例如如何 对于整数的实现 我查看了 Smalltalk 的源代码并发现了这个Smalli
  • 如何在没有副本的情况下向后流式传输集合?

    我想知道如何向后流式传输集合无副本在法罗 吱吱声中 例如 要流式传输 1 2 3 so stream next回报3 then 2 then 1 我知道我可以使用collection reversed readStream but reve
  • C 中的可移植函数(无汇编)返回其堆栈帧的大小

    用 C 编写一个可移植函数 无需汇编 返回其堆栈帧的大小 int stackframe size 尝试如下解决 该函数在使用 VS 2010 编译时返回 228 字节 有没有办法验证其正确性 int stackframe size int
  • 如何在 Smalltalk 中管理二维数组?

    我有一个点列表 必须进行侵蚀 膨胀操作 我需要一种 2d 数组 但在 VisualWorks 中找不到如何操作 我知道 Squeak 中有一个 Array2d 类 但我必须使用 VW 许多 Smalltalk 实现都会有某种 Matrix
  • Scala Continuations - 为什么我的转移调用不能位于 try-catch 块内?

    我对 Scala 延续很陌生 而且对一般的 scala 语言也比较陌生 我尝试使用 Scala 延续并编写了以下代码 case class MyException msg String extends Exception def go In

随机推荐

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

    假设我想展平相同类型的嵌套列表 例如 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 的调用堆栈 我可以轻松想象它是如何实现和工作的 但对于这个 我不能 请帮助我理解它 我认为这不是一个简单的问题