问题标签 [i386]

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 回答
857 浏览

assembly - 在 x86_64 上组装 i386 代码

以下代码无法按预期工作:

当跑过:

它什么也不输出。当我换行时:

它工作正常。我尝试编译原始代码--32 -march=i386并链接,-m elf_i386但它仍然没有输出任何内容。

我猜这是因为内存模型不像 i386 那样平坦。我可以以某种方式模仿吗?

0 投票
2 回答
141 浏览

linux - int 和 long 的范围是多少,只要它们都是 4 个字节

4 个字节的 long 如何比 int 有更宽的范围?来源: http: //lwn.net/images/pdf/LDD3/ch11.pdf

0 投票
2 回答
327 浏览

assembly - GAS 程序集片段除以 0,不知道为什么

我有以下功能,涉及 GAS 语法中的 i386 程序集片段:

我注意到,在某些情况下,我在EXC_I386_DIV使用此功能时会崩溃。以下调用会产生这样的崩溃:

我无法清楚地看到导致此函数除以 0 的原因:它肯定只是将 4096 移动到eax,然后将其乘以 -566,然后将其除以 400,返回除法运算结果的两个分量。任何人都可以对此有所了解吗?

0 投票
1 回答
558 浏览

c - GNU 链接器和架构 i386

所以我在 OS X 上运行,我想链接两个 Mach-O 对象 i386。

第一个是从 NASM 生成的(它是一个汇编文件)

第二个是从 GCC 生成的

但是当我尝试链接它们时......

...我收到此错误:

我不明白为什么,因为我的两个文件是Mach-O object i386


如果你需要它,这里是kernel.asm

这是screen.c

0 投票
1 回答
1020 浏览

linux - 在 NASM 中实现 cat>fileName 命令

我尝试cat>filename使用系统调用在 Ubuntu 11.04 的 NASM 中实现命令。我的程序编译成功并成功运行(似乎如此)。但是,每当我尝试触发cat filename命令时,它都会显示“没有这样的文件或目录”,但我看到该文件位于目录中。如果我尝试通过双击打开文件,它会显示“您没有打开文件所需的权限”。你能帮我找出我的代码中的错误吗?

代码如下:

ps 以上代码是根据RageD的建议重新编辑的。然而,我创建的文件不包含从“inputAndWrite”段给出的任何输入行。我正在寻找你的建议。

0 投票
0 回答
444 浏览

compilation - 拒绝dosbox的i386 exe文件,在x64 Windows上

我正在尝试让代码在我的机器上运行(Windows 7 x64),它是一个 fortran 90 代码,需要第三方提供的基于 i386 的 dll 才能工作。

当我尝试将它(使用最新的 gfortran 和 mingw)编译到 x64 目标时,它拒绝了,因为 i386 dll 文件。然后,我尝试将其编译为 i686 目标,并且编译工作没有错误。

但是,输出的 a.exe 文件不会在我的 x64 窗口上运行(正如人们所期望的那样),并且在尝试从 Dosbox 运行它时(当我到达正确的目录时只需键入“a”或“a.exe”) , 我刚刚得到“这个程序不能在 DOS 模式下运行”。

所以我的问题是:这是编译过程中的失败,还是 Dosbox 出于某种原因拒绝了该程序(原因可能是“a.exe”程序在执行时需要写入文件:这是它的目的,实际上!),如果是这样,是什么原因,有没有办法最终看到我的 exe 文件运行?在我的机器上?

编辑:Dosbox 确实可以运行我从另一个项目中获得的 32 位 exe 文件,所以它不是 Dosbox 完全没有功能。但是,当尝试直接使用 Windows 7 打开该 exe 文件时,它说它与 x64 不兼容,而对于另一个文件 (a.exe),它只是说它“初始化失败”,代码为“0xC000007b”......不幸的是我的编译器调试知识接近于零……

非常感谢您的帮助!

0 投票
1 回答
2007 浏览

operating-system - 推荐一个简单的 x86 模拟器和操作系统

作为一个个人学习项目,我想将现有的 x86 模拟器库移植到 JavaScript,然后在其上运行一个非常简单的操作系统。

我对该库的唯一要求是它应该用 C\C++ 编写,因为我想使用 emscripten 和 asm.js 将源文件编译为 JavaScript。该库至少应该能够解释 x86 操作码;JavaScript 的特定环境细节(内存、GUI、中断等)我可以自己实现。操作系统没有任何要求,只要足够简单并且可以在模拟器上运行即可。

到目前为止,在我的研究中,Softx86似乎是最可行的解决方案,因为它似乎很容易移植到 JavaScript(它只进行 CPU 仿真)。我能找到的最简单的 16 位实模式操作系统是MikeOS,唯一的问题是它需要 386 处理器,Softx86 无法模拟,我不确定它们是否完全兼容。

我的问题是,是否有人知道模拟器-OS 的替代组合,它足够简单,可以移植到 JavaScript。

0 投票
2 回答
213 浏览

c - 将 64 位代码移植到 32 位机器

我见过很多人询问从 32 位到 64 位机器的移植问题。但是将编写在 64 位上的代码移植到 32 位上不是很常见吗?我正在尝试在 C 中将插件从 64 位移植到 32 位,但在将 void * 存储到 64 位整数(反之亦然)的情况下面临类似问题。

更改代码以使相同的代码在两台(i386 和 x86_64)机器上都可以工作的方法应该是什么?我认为在 32 位机器上使用 uint64_t * 代替 32 位的 void* 没有意义?对于这种情况,是否存在一些通用方法?

0 投票
1 回答
4785 浏览

ios - iOS 制作通用库 - 适用于 i386 和 arm7

我们正在构建一个用于 iOS 开发的库。我们可以为模拟器生成 i386 库,或者为硬件设备生成 arm7 库。就像现在一样,在将库分发给其他开发人员时,我们需要有两个不同的文件(.a 库)。这对于分发目的来说有点麻烦。我想知道; 有没有办法在 XCode 中构建库,以便单个 .a 库文件中同时包含 i386 和 arm7,这样我们就可以为 i386 和 arm7 架构分发一个库文件。

0 投票
1 回答
4327 浏览

gcc - 如何在 x86_64 主机上为 i386 架构编译应用程序

在拒绝切换到 x86_64 平台多年之后,我终于做出了切换。主要是因为我想玩弄 docker(FTW:http ://docker.io )。

在我的职责范围内,我通常必须为 32 位平台构建应用程序。因此需要在 x86_64 主机上为 i386 编译应用程序。

我正在使用 ubuntu 13.04。在发布这个问题之前,我环顾四周想弄清楚这一点。

所以这就是我收集的内容: 1. 需要安装 gcc-multilib (apt-get install gcc-multilib) 2. 需要安装 ia32-libs (apt-get install ia32-libs) 3. 我们需要指定 -m32切换到 GCC

结果,我可以为 i386 编译应用程序。例如。

现在问题来了。当我尝试链接 zlib 库时。

我无法弄清楚这个问题。我该如何解决。根据我目前的理解,我已经安装了所有必需的软件包......

我已经研究过使用 a 解决这个问题。Linux 容器 / 码头工人。湾。Ubuntu 13.04 i386 入狱根。

以上两种方法都有效。但是在达到能够建造的地步之前,还有很多障碍需要克服。

但是有什么比让 i386 应用程序在 x86_64 主机上编译更好的呢。

任何帮助是极大的赞赏。

谢谢和问候~Sameer