我偶然发现了Smalltalk并进一步下载了Pharo,因为它被推荐了.我的第一印象非常积极.我想移植一些我用C++编写的简单程序(我的主要语言),所以我可以感受到Smalltalk.
但是,我意识到我找不到一个简单的方法来从用户那里获得一些输入,例如我想创建一个带有REPL循环的控制台计算器,但我找不到在Pharo中这样做的方法.我不想要带按钮的gui,因为这只是缓慢而且不方便.
有人可以指出我如何在Smalltalk中做简单的事情,比如让用户输入10个数字或命令等?我是否必须使用其他实现?我的目标是std :: cin/cout或python的打印/输入
我知道成绩单显示:,但这只涵盖了输出部分.
提前致谢!
我想读取一些Cortex-A53寄存器的值,例如
不幸的是,我缺乏一点嵌入式/组装经验。文档显示
访问 ID_AA64ISAR0_EL1: MRS 、 ID_AA64ISAR0_EL1 ;将ID_AA64ISAR0_EL1读入Xt ID_AA64ISAR0_EL1[31:0]可以通过内部存储器映射接口和外部调试接口访问,偏移量0xD30。
我决定在我的目标上使用 devmem2(因为 busybox 不包含 devmem 小程序)。以下读取寄存器的过程是否正确?
devmem2 0xD30
Run Code Online (Sandbox Code Playgroud)
我不确定的部分是使用“偏移量”作为直接物理地址。如果它是实际地址,为什么要调用“offset”而不是“address”。如果是偏移量,基地址是多少?我 99% 确定这不是正确的过程,但我如何知道要添加偏移量的基地址?我搜索了Armv8技术参考手册和A53 MPCore文档没有结果。详细解释了寄存器内容,但似乎假设您使用标签 ID_AA64ISAR0_EL1 从 ASM 读取它们。
更新:
我找到了这个:
配置基地址寄存器,EL1 CBAR_EL1 的特性包括: 用途 保存内存映射 GIC CPU 接口寄存器的物理基地址。
但它只是重复了我的问题,如何读取另一个寄存器?
更新 2: 第一个更新似乎仅与 GIC 相关,与我试图读取的配置寄存器无关(我认为我误解了信息)。
对于手头的具体问题(检查加密扩展可用性),人们可以简单地 cat /proc/cpuinfo 并查找 aes/sha 等。
更新3:
我现在正在调查http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0176c/ar01s04s01.html,以及 SoC 特定的基地址,因此可以在SoC 的参考手册。
更新4:
感谢这个很好的答案,我似乎能够通过我的内核模块读取数据:
[ 4943.461948] ID_AA64ISA_EL1 : 0x11120
[ 4943.465775] ID_ISAR5_EL1 : 0x11121
Run Code Online (Sandbox Code Playgroud)
PS: 这篇文章非常有见地,再次感谢!
更新5: 根据要求源代码:
/******************************************************************************
*
* Copyright …
Run Code Online (Sandbox Code Playgroud)