问题标签 [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.

0 投票
1 回答
267 浏览

compiler-construction - 重定向输出时保存堆栈指针会导致分段错误

我正在编写一个 Sparc 编译器。我的一个测试用例运行正常,但是当输出重定向到文件时崩溃。

使用 GDB,我发现这是导致段错误的行:

我的堆栈空间不足了吗?这是怎么回事?为什么它只在我重定向输出时发生?

0 投票
0 回答
443 浏览

window - SPARC 窗口溢出

假设我有 8 个像这样的窗口:http ://www.sics.se/~psm/sparcwin.gif

我在那种情况下是对的,WIM 指向 w7,我在窗口 w0 中。

假设在这个窗口中,我将调用一些接收一个参数的函数。所以我将参数值设置为 %o1(让函数在 %i0 中接收它)。

好的,然后我拨打电话,该函数执行“保存”。该窗口位中的 WIM 为 1,因此触发了 window_overflow。我对此的理解是,处理程序保存在窗口 w7 (%sp) 的堆栈上,寄存器 %i1,..,%i7,%l0,..,%l7, 然后让'返回时'在 window_underflow 中恢复该窗口。

我的问题是......当保存窗口时,w7的原始%i0,......,%i7由于现在丢失是w0中程序调用的函数的参数(因为我设置了%o0,。 . 在 w0 调用之前,然后进行“保存”错误)。所以这个“系统”没有意义,所以我想我错过了一些东西。

另一个类似的问题。假设我在 w0 中的程序没有调用函数,而是使用 %o0,%o1,.. 作为“局部”变量,我会遇到同样的问题,甚至不知道我杀死了 w7 的 %i0,%i1,..。

解答: 我发现无效窗口已经保存在堆栈中,所以当“保存”完成时,window_overflow 处理程序会将 w6 保存在堆栈中(并将 WIM 设置为 w6)。这显然解释了我的问题。我想我在看到这个陷阱的处理程序示例时感到困惑,并且不记得在 V8 中它总是在不检查 WIM 的情况下减少 CWP。

0 投票
1 回答
267 浏览

gcc - solaris gcc lib问题

刚刚在solaris 2.10上编译了gcc。我的问题: lib/...so 和 lib/sparcv9/...so 文件有什么区别?

0 投票
4 回答
828 浏览

c++ - 用于 Solaris SPARC 平台的 Profiler(用于 C++ 应用程序)

是否有适用于 c++ 应用程序的 Solaris 10 SPARC 体系结构的分析器?如果重要的话:我们使用 gcc 来编译我们的 c++ 源代码。

0 投票
4 回答
2128 浏览

ffmpeg - 无法在 Solaris 10 sparc 上编译 ffmpeg

有没有人为 Solaris 10 sparc 编译过 ffmpeg 0.6.1?我收到以下错误:

0 投票
2 回答
138 浏览

assembly - 关于反汇编输出的问题

我有一个非常简单的测试例程:

然后我生成目标文件,然后我分解目标文件以查看 ADD 和 OR 操作的指令字,如下所示:

生成的拆卸如下所示:

如您所见,它们既不是 ADD 指令也不是 OR 指令。任何人都知道为什么会这样?相当混乱...

非常感谢,吉姆

0 投票
2 回答
1147 浏览

c - SPARC 装配问题

我想在我的 C 程序中编写一个非常简单的内联汇编例程,然后将本地寄存器 %l0 - %l7 设置为不同的值。我尝试了以下简单的方法:

不幸的是,汇编器告诉:每条指令的操作数都是非法的。有人能很好地指出我如何正确地将立即值传递给 SPARC 汇编器吗?

非常感谢!

编辑:谢谢克里斯,我做了你建议的改变,但 Sparc 编译器仍然告诉一些关于非法操作数的东西......

0 投票
2 回答
166 浏览

c - 处理器寄存器 - 应用程序变量关联

我有一个非常简单的问题。我想编写一些直接在单个寄存器上运行的汇编代码(用于 SPARC),称为 %o1。我想做的就是用零初始化这个寄存器,然后用一些立即数递增它。问题是,如何从 C 应用程序以 %o1 输出结果。我的骨架看起来像这样:

所以问题是我如何将 %o1 的值(在计算结束时应该是 6)分配给变量 a 以便它可以打印在控制台上。

0 投票
2 回答
1666 浏览

c - 在 Assembler 中指定数组

我想在我的程序集文件中指定一个 512 x 32 位数组,如下所示:

所以我在 function_01 中尝试做的是访问数组中的第 4 个元素。但是,当我尝试为 SPARC 架构编译上述程序集时,我收到以下错误:

不知道该怎么做这个错误。这是否意味着数组太大或者我在代码中还有其他错误?

0 投票
1 回答
353 浏览

gdb - SPARC 和 HP-UX 中的叶函数

我刚刚阅读了一篇在 HP-UX 中进行反汇编的 Phrack 文章。我读到有两类功能可以在 HP-UX 和 SPARC 下使用;叶函数和非叶函数。以下是我从这里截取的反汇编部分。

通常当一个函数被调用时,返回地址被压入堆栈,这样程序就知道一旦函数执行完毕,将控制权返回到哪里。在这些叶子函数的情况下,它是如何工作的?

我没有任何 HP-UX/SPARC 机器的访问权限,因此无法自己尝试(而且由于同样的原因,我也不太了解这种情况下的程序集)。

有人可以解释在这种情况下控制如何返回到被调用函数吗?