问题标签 [sparc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compression - 用于嵌入式系统核心转储的 .bss 和 .data 的 8/16/32/64 位对齐无损压缩
我正在为以下任务寻找一种快速/无损/固定间隔压缩算法。
我有一个嵌入式系统。内存/闪存资源不足。
我想为它生成一个核心转储并将结果存储在闪存中和/或通过慢速串行线路将其吸出。
我需要的只是堆、堆栈、.data 和 .bss 段以及一些内存映射寄存器。
该设备是 Leon Sparc Softcore。
现在,这些数据作为几个奇怪的数据表明
- 通常的 LZW / Zlib / ... 压缩库不会那么好。(不是自然语言语料库)。
- Sparcs 对对齐非常着迷。IE。我可以保证.bss 和 .data 段中的每个项目都是(有效地)在 8、16、32、64 位地址边界处相应对齐的 8、16、32 或 64 位 int。
- 我必须为压缩代码保留一个小的固定空间。
- 这是一台 32 位机器,其 bss 和数据段的大小远小于 4gb。
- 系统中的大多数 32 位值是符号的地址。IE。4 gig 可能值的一个非常小的子集。
我目前的计划是……扫描整个 .bss / .data 段并计算 16 位值的完整直方图。
由此我可以得到一个完美的霍夫曼编码。但我怀疑考虑到 32 位/64 位值的内部结构,我可以做得更好。(例如,最高有效位的可变性远小于最低有效位的可变性。)
和指针/建议/现有的工作?
solaris - 挂载:权限被拒绝
我正在尝试在 solaris sparc 5.11 上安装一个 solaris sparc 5.10 目录,例如
root> mount S5.10Machine:/mydir /mydir
我得到
nfs mount S5.10Machine:/mydir 权限被拒绝。
我已在 S5.10Machine:/mydir 上授予 777 权限
assembly - 标记生成的 sparc 汇编代码段以供检查
有谁知道如何使用 Sun Studio 编译器插入可识别的代码序列,而不会搞砸优化?
我想看看 Sun Studio (12.1) 编译器在许多实例中对一些代码做了什么,并且正在寻找一种方法来用一组可识别的无操作指令标记生成的代码,所以我可以找到我的代码片段。我第一次尝试使用:
但是,当我使用它时,编译器会在 nop 块中生成外观未优化的代码。例子:
有问题的代码只是两个商店。我真的不知道 sparc 汇编,但这看起来编译器已经完全放弃了优化 nop 块中的代码。例如,为什么它会生成一个新的负载,ldx [%sp + 0x8c7], %o4
重新计算存储的基地址,而它已经完成了这个%02
?
看一眼周围的代码,很可能在使用的 asm volatile 附近的任何地方都没有优化。
我尝试了以下方法,使用此内联 asm 创建了一个 .il 文件:
在我的来源中包含以下内容:
使用这个,我遇到了相反的问题,编译器现在太聪明了,并且完全消除了我的 nop 指令(我猜它着眼于.inline
块中指令的副作用,然后稍后,正确地决定这个不做任何事情,并扔掉那段代码)。
还有更好的方法吗?
assembly - 代码写入 1,但不写入标准输出?
我正在尝试在 sparc32 上运行一些简单的汇编代码,但它不会写入标准输出,无论是 ta 0x00 还是 ta 0x08,都会出现问题:
这可能是一些与链接器相关的问题吗?我似乎在 truss 输出中看到了一个写入。
c - 从 C 到 SPARC 的字符数组转换
考虑如下所示的 C 源代码语句。
完成下面的 SPARC 汇编语言代码段,使汇编语言语句的顺序与上面的 C 语句等价。
我想知道 smul %i1, 40, %l1 行在做什么。我不明白为什么它要乘以 40。如果有人能解释一下,那就太好了。谢谢。
assembly - 将数据放入特定位
我正在尝试学习 SPARC 并尝试创建一个大小为 4,000 字节的数组。在这个数组内部,我需要计算一个偏移量以将值放置在该数组中的正确位置。我想我知道如何调整数组的大小(只需使用.skip?)并且我知道如何计算我的偏移量,但是谁能告诉我如何将值放入正确的字节中?感谢大家。编辑:我最初说的是位,意思是说字节。
c - SPARC 使用 scanf() 读取字符
好的,这是我的问题。我正在尝试使用 scanf() 从用户输入中获取一个字符,然后在 SPARC Assembly 中将其打印回给他们。这段代码比我实际尝试做的要简单,但这是我挂断的事情。它适用于字符串,但由于某种原因不适用于字符。
SPARC 代码:
C代码:
c - Makefile 问题 - 阅读器中的致命错误
我为学校项目创建的 makefile 存在一些问题。我正在编译和汇编一个 C 文件和一个 SPARC 汇编文件(分别)并链接它们。我在 Unix 环境中工作。这是生成文件:
但是,当我尝试做到这一点时,我收到了一个阅读器错误,特别是:
“阅读器中的致命错误:proj09.makefile,第 2 行:看到意外的行尾”
现在我知道这通常意味着某些东西的格式不正确,但我不知道在这种情况下它可能是什么。此外,我不是 100% 确定这是生成文件的正确代码(特别是我的 support.s 文件的组装,以及两个文件的链接)。如果这是一个重复的问题,我深表歉意,我事先浏览了档案,找不到任何有用的东西。任何帮助将不胜感激!
编辑:我不明白为什么这会有所作为,但我使用 gedit 实际编写代码,然后将文件传输到 SSH 进行链接。
tcl - 如何在 solaris sparc 上安装 tcl
我有一台solaris机器配置:SunOS indevel07 5.10 Generic_147440-15 sun4v sparc sun4v
. 我正在尝试expect utility
在此安装。expect 实用程序需要安装 tcl。我也尝试安装它,但出现错误。我已经从 sunfreeware 下载了tcl-8.5.12-sol10-sparc-local.gz和expect-5.45-sol10-sparc- local.gz。我已将它们解压缩并尝试像pkgadd -d pkgname
. 我收到如下错误:
有很多这样的错误。我试图通过谷歌搜索对其进行故障排除,但找不到任何相关信息。因为这个,我被我的发展困住了。
memory - 在程序集中分配空间(插入函数)
我正在研究一个相当于插入函数的程序集,我想知道我将如何准确地分隔列表的元素,以便我可以将我的数据放入其中。我已经找到了应该插入我的信息的正确地址,但是对于如何写入我的数据而不覆盖那里的数据我有点困惑。我的想法是
其中 48 是我的元素的大小。这给了我一个错误无效的对齐边界。有任何想法吗?