问题标签 [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.
assembly - 在没有 Sparc 硬件的情况下运行 Sparc 二进制文件
在过去的几个月里,我一直很好奇尝试为 SPARC 处理器(V8 或 V9)做一些组装。我的问题是,我无法访问 SPARC 机器,有没有办法可以在我的 x86 机器上运行 SPARC 二进制文件?我看过 QEMU,但我不太确定如何设置它。
assembly - SPARC - 无移位的位掩码
我正在学习 SPARC 汇编,我必须创建一个从寄存器中提取字段的脚本。该脚本接受 3 个值,初始编号、字段起始位置、字段长度。
它不能使用任何移位函数,但可以使用乘法和除法。
我目前患有呼吸道病毒,随后服用了大量药物。我很难弄清楚从哪里开始。一些方向将不胜感激。
optimization - 取消的分支与常规分支有何不同?
特别是对于 SPARC 程序集,已取消的分支与常规分支有何不同?
我一直认为,当我需要填充分支指令的 nop 延迟槽时,需要取消分支指令。但是,我认为我在这部分上是不正确的,因为您可以在不取消分支的情况下填充 nop。
c - 如何获取库函数的内存位置?
我正在使用 SPARC RTEMS C 编译器编译 C 程序。
使用 Xlinker -M 选项,我可以获得一个包含很多我不认识的东西的大内存映射。
我还尝试使用 RCC nm 实用程序,它返回一个更易读的符号表。我假设这个实用程序为 printf 提供的位置是 printf 在内存中的位置,并且每个调用 printf 的程序都将在执行期间到达该位置。这是一个有效的假设吗?
有没有办法获取所有库/系统功能的位置列表?此外,当链接完成时,它是只链接可执行文件调用的函数,还是链接库中的所有函数?考虑到我在符号表和内存映射中找到的东西的数量,在我看来是后者。我可以让它只链接所需的功能吗?
谢谢你的帮助。
c - 如何在动态链接库中引用全局变量?
环境是 32 位 SPARC 上的 Solaris,但我认为这是动态链接和/或与位置无关的代码更普遍的问题。
我有一个汇编程序,我将其编译为与位置无关的代码,并从 C 程序动态链接到它。它工作正常,除了我不能从汇编程序中引用汇编程序保留的任何内存。在汇编程序中跳转可以正常工作。
我只想在汇编程序中读取和写入内存,但是任何时候我尝试都会遇到分段错误。
我写了这个测试程序来调试这个问题
我编译这个
作为 -K PIC -b
并在 C 中 dlopen 生成的 .so
当我打电话时dl_testprog()
,它会打印“4”。如果我尝试打印 testprog 或 print_int 的地址,它也会打印“4”。跳转到一个标签,其他一切都很好。查看反汇编,foo 被替换为 0x0,就像它应该的那样。
我是否必须通过_GLOBAL_OFFSET_TABLE_
或其他什么,才能在汇编程序中写入我自己的内存?如果是这样,我该怎么做?我尝试的一切都导致了段错误,并且我无法找到一个很好的指导如何做到这一点(这让我相信你不应该这样做。这不是链接器问题吗?) .
performance - 使用 1.6 JVM 的 SPARC 硬件上的 64 位与 32 位性能
我正在为我们在 SPARC 硬件上运行的 Tomcat 集群进行性能调整。32 位 JVM 目前为我们提供了足够的内存,但我们将开始使用 Terracotta 进行服务器条带化,因此很快就会需要 64 位 JVM 提供的额外内存。
除了更大的内存占用之外,迁移到 SPARC 上的 64 位 JVM 还会导致性能下降。此常见问题解答显示 SPARC 上 64 位 JVM 的 1.4 版性能下降了 10% - 20%:
http://java.sun.com/docs/hotspot/HotSpotFAQ.html#64bit_performance
如果可以避免的话,我对性能降低 10% - 20% 不感兴趣。已经讨论过使用 32 位/64 位混合方法来避免此问题,因此 1.6 JVM 可能没有 1.4 JVM 所具有的性能影响:
http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/
是否有人在 SPARC 上使用 1.6 版从 32 位 JVM 迁移到 64 位 JVM 的当前性能指标?
谢谢。
院长
perl - 在 Solaris 9 上休眠时的 SIGALRM
在 Solaris 9 (Sparc) 的 chroot 环境中运行 Perl 时,我遇到了一些奇怪的错误。我们使用的是定制的 Perl,但它几乎完全是 Perl 5.8.7,而且这个版本已经在包括 Solaris 8-10 在内的各种平台上运行了多年。
以下代码非常简单:
但是,如果我运行它,“刚醒来!” 永远不会被打印 - 相反,程序结束并且“闹钟”回显到屏幕上。只有在睡眠时才会发生这种情况——如果我编写了一个执行大量数学运算并需要 10 秒运行的程序,那么一切正常。它也只发生在 chroot 环境中。
我已经转储了 %SIG,它有一个 'ALRM => undef' 的条目,这是预期的 - 非 chroot 环境具有相同的行为。但是,如果我将脚本更改为包括:
...一切正常。那么,有什么关系呢?我对 Solaris 没有太多经验,但是必须有一种方法可以使默认信号处理程序正常运行。
c++ - 纳秒到毫秒 - 快速除以 1000000
我想将输出从 gethrtime 转换为毫秒。
显而易见的方法是除以 1000000。但是,我经常这样做,想知道它是否会成为瓶颈。
在处理像 1000000 这样的数字时是否有优化的除法运算?
注意:任何代码都必须是可移植的。我正在使用 gcc,这通常在 Sparc 硬件上
使用下面的代码进行一些快速测试......希望这是正确的。
示例输出:
如果这是正确的,那么在这种情况下,倒数的倍数实际上会更慢。这可能是由于使用浮点数学而不是定点数学。我将坚持整数除法,这仍然几乎不需要任何时间。
c - SPARC v9 是否有双字比较和交换指令?
所以; 在符合 v9 的 64 位 SPARC CPU 上,存在我知道cas指令。这对单个字长值进行操作。
我还在网上看到了对casx指令的引用——但我找不到更多关于它的信息。
我想知道 - 这是一个双字比较和交换吗?
如果不是,一般的问题是;是否有双字比较和交换?
c++ - 用于 Solaris SPARC 的 C++ IDE
我们得到了一个显然是使用 Rational Apex 作为前端开发的 C++ 代码库。在我们看来,Apex 对于 C++ 开发来说并不理想。
我们正在寻找一个我们可以使用的 IDE,它具有语法突出显示、代码遍历(转到定义、显示用法)并且使用起来并不痛苦。
我们已经了解了 NetBeans、Sun Studio 和理解。NetBeans 在每一步都在与我们抗争,Sun Studio 缺乏功能,Understand 并不是真正的 IDE,但我们正在考虑尝试强制它与宏集成。
SO上还有其他类似的问题,但它们似乎是更有针对性的问题(而且更晦涩难懂)。
我想知道的是 Solaris 开发人员使用什么。我们是否需要再看看 NetBeans 或 Sun Studio,还是我们遗漏了什么?