问题标签 [assembly]

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 投票
2 回答
3853 浏览

assembly - 设置 IRQ 映射

我正在关注几个教程和参考资料,试图设置我的内核。我在一个根本没有解释它的教程中遇到了一些不熟悉的代码。我被告知将其映射16 IRQs (0-15)到 ISR 位置的代码32-47

的代码outportb()如下,但我已经清楚地掌握了它的作用:

我应该提一下,这是在保护模式下的 x86 架构上。此源代码工作正常,我了解它的作用,但我不明白它是如何做到的。有人可以向我解释这里发生了什么,以便万一我需要对此进行扩展,我会知道我在做什么?

0 投票
1 回答
4593 浏览

gcc - 如何在 x64 计算机上使用 gcc 编译 x86 汇编代码

对于学校作业,我必须编写 x86 汇编代码,但我不能使用 gcc 编译它,因为我的计算机是 x64 机器,而 gcc 只需要 x86 代码。是否有一个命令可以让 gcc 接受它的 x86 汇编代码?谢谢

PS 我知道我的代码是有效的,因为它在 x86 机器上编译得很好。

0 投票
7 回答
3895 浏览

assembly - 在 1 条 ARM 指令中清除高 16 位

在 ARM 汇编中,立即数由 8 位旋转值编码,这意味着我们只能编码

现在我的问题是我想清除 r0 的高 16 位并将其替换为存储的半字 r1。但是由于立即数的范围有限,我必须做:-

是否可以用一条指令替换 2 条 bic 指令?0xffff0000 是不可编码的。也许我应该使用另一个逻辑操作来清除高 16 位?

谢谢

编辑:对不起,我忘了说 r1 的前 16 位是空的,我使用的是 ARM7TDMI

0 投票
2 回答
1672 浏览

assembly - IA-32 汇编中的变量初始化

我对 MASM 程序集中的变量初始化有疑问。

如何将 2^32 初始化为变量以及应该初始化哪种变量?DWORD 还是 REAL4?

我尝试这样做:

当我将 var 分配给一个寄存器(例如 mov eax,val)并尝试写入该值时,我看到的不是 2^32。我也试过用 REAL4 类型。结果还是一样。

那么我在这里做错了什么?

提前致谢...

0 投票
1 回答
1207 浏览

assembly - 在装配应用程序中修改内存

我正在从“x86 汇编的艺术”一书中学习汇编语言,我有一个问题我想不出答案。

程序是这样的:

“在本练习中,您将启动一个运行程序,该程序检查和操作内存中的值。然后您将切换到内存屏幕并修改内存中的值(也就是说,您将在程序继续运行时直接访问内存)。

程序首先将内存位置 1000h 设置为零,然后循环直到满足两个条件之一 - 用户切换 FFF0 开关或用户更改内存位置 1000h 中的值。切换 FFF0 开关会终止程序。

更改内存位置 1000h 中的值会将控制权转移到将 n 个字相加的程序部分,其中 n 是内存位置 1000h 中的新值。”

在对这些值求和后,它使用“put”打印它们的总和

我有这个代码:

问题是当我将值 12h 放在 1000h 上时,程序会输出 2 个值、总和和数字 1。

当我单步执行程序时,它输出 1 个值(总和),但是当我运行它时,它输出 2 个值(总和和数字 1)。

有人可以解释这种行为吗?

0 投票
2 回答
546 浏览

data-structures - 汇编器中数据结构的好库/库

汇编程序中的 x86(或其他)标准数据结构(链接列表、数组列表、队列、堆栈等)是否有任何好的库(最好带有注释源)?我不喜欢重新发明(和调试!)轮子......

0 投票
2 回答
126 浏览

python - 如何从 x86asm/x64asm 调用 python2.5 函数?

我将有几个必须与汇编代码交互的 python 函数。该解决方案不需要是一个完整的解决方案,因为我不会与 python 代码交互太久。无论如何,我咀嚼了一下:

  • python 对象在内存中是什么样的?
  • 如何调用python函数?
  • 如何将 python 对象作为 ctypes 接口的 python 对象传递?
  • ctypes 界面能否以其他方式让我的工作更轻松?
0 投票
6 回答
3958 浏览

macos - PPC 断点

如何在 PPC 上实现断点(具体来说,在 OS X 上)?

例如,在 x86 上,它通常使用 INT 3 指令 (0xCC) 完成——对于 ppc 是否有与此相当的指令?还是有其他方式设置/实现它们?

0 投票
8 回答
8433 浏览

c - 每个 C 指令有多少个 asm 指令?

我意识到这个问题不可能绝对回答,但我只是在了解大致数字:

给定一个合理大小的 C 程序(数千行代码),平均会生成多少条 ASM 指令。换句话说,现实的 C 与 ASM 指令比率是多少?随意做出假设,例如“使用当前的 x86 架构”。

我试图谷歌这件事,但我找不到任何东西。

附录:注意到这个问题带来了多少混乱,我觉得需要解释一下:我想通过这个答案知道,实际上是知道“3GHz”是什么意思。我完全清楚每赫兹的吞吐量因架构、硬件、缓存、总线速度和月球位置而有很大差异。

我不是在追求一个精确和科学的答案,而是一个可以放入可理解的尺度的经验答案。

这不是一个简单的地方答案(正如我注意到的那样),这是我最大的努力。我知道每行 C 的 ASM 结果行的数量取决于您在做什么。与- 我知道这i++一点不在同一个街区。sqrt(23.1)此外,无论我从 C 中得到什么 ASM,ASM 都会被解释为处理器内的各种微码集,这又取决于您运行的是 AMD、Intel 还是其他东西,以及它们各自的世代。我也知道这一点。

到目前为止,我得到的大致答案是我一直在追求的:一个足够大的项目平均每 1 行 ANSI-C 大约 2 行 x86 ASM。一旦流水线被填满并且给定足够大的样本,今天的处理器可能平均每个时钟周期大约有一个 ASM 命令。

0 投票
7 回答
2707 浏览

optimization - 8051 汇编语言中内存优化的技术有哪些?

我需要优化代码为一些新代码腾出空间。我没有空间进行所有更改。我不能使用代码库切换(80c31 和 64k)。