问题标签 [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 投票
12 回答
11669 浏览

assembly - MIPS——重要吗?

我的问题:了解 MIPS 编程语言有用吗?

我是一名计算机科学专业的学生,​​正在上一门专注于 MIPS 的组装课程。我很擅长用高级语言写作,但 Mips 让我有点失望。

MIPS 是我真正应该关注并尝试完全掌握的东西吗?将来会对我有帮助吗?

0 投票
2 回答
5412 浏览

assembly - 如何开始对 z80 机器代码进行逆向工程?

我有一个 .z80 内存转储。我如何对其进行逆向工程?我需要知道什么?我怎样才能最大限度地减少体力劳动?

0 投票
6 回答
9621 浏览

visual-studio - 使用 Visual Studio 2008 汇编、链接、调试和执行 MASM 6.11 汇编代码

我想尽可能地使用 Visual Studio 2008,同时有效地编译/链接/构建/等代码,就好像所有这些构建过程都是由 MASM 6.11 提供的工具完成的一样。MASM 的确切版本无关紧要,只要它在 6.x 范围内,因为这是我的大学用来教授 16 位汇编的版本。

我对该主题进行了一些研究,得出的结论是有几种选择:

  1. 重新配置 VS 以使用与 MASM 6.11 本身相同的标志等调用 MASM 6.11 可执行文件。
  2. 创建要由 VS 调用的中间批处理文件,然后为 MASM 的链接器等调用正确的命令。
  3. 重新配置 VS 的内置构建工具/规则(汇编器、链接器等)以提供与 MASM 6.11 使用的环境相同的环境。

当我意识到 VS 的“外部工具”界面中可用的选项可能不足以正确调用 MASM 的构建工具时,选项 (2) 被提出,因此解释 VS 传递参数的严格方法的批处理文件可能会有所帮助,因为很多我学习如何使这项工作涉及我从命令提示符手动调用 ML.exe、LINK.exe 等。

以下是几个可能有助于回答我的问题的链接。请记住,我已经阅读了所有内容,但没有一个是实际的解决方案。我只能希望我指定的 MASM 6.11 不会阻止任何人提供可能更普遍的答案。

与选项(2)类似的方法,但线程上的用户无法联系:http:
//www.codeguru.com/forum/archive/index.php/t-284051.html
(另外,我对中间批处理文件的必要性)

对我的问题的过时解释:
http ://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html

可能是我最接近最终解决方案的东西,但指的是除 MASM 之外的工具套件,还使用批处理文件:
http ://www.kipirvine.com/asm/gettingStarted/index.htm#16 -少量

如果我在代码的每个步骤中使用的工具的术语 - > exe 进程已关闭,我深表歉意,但由于我试图在完成编写代码和生成可执行文件之间重现所有步骤,所以我不认为这很重要。

0 投票
5 回答
6698 浏览

assembly - GCC 内联汇编器,混合寄存器大小 (x86)

有谁知道我怎样才能摆脱以下汇编程序警告?

代码是 x86,32 位:

如果我编译它,我会收到以下(非常有效的)警告:

我正在寻找的是一种告诉编译器/汇编器我想要访问 %0 的低 16 位子寄存器的方法。访问字节子寄存器(在本例中为 AL 和 AH)也很高兴知道。

我已经选择了“q”修饰符,所以编译器被迫使用 EAX、EBX、ECX 或 EDX。我已经确保编译器必须选择一个具有子寄存器的寄存器。

我知道我可以强制 asm 代码使用特定的寄存器(及其子寄存器),但我想将寄存器分配工作留给编译器。

0 投票
2 回答
2438 浏览

gcc - 使用内部函数时如何让 GCC 使用两个以上的 SIMD 寄存器?

我正在编写一些代码并尝试使用 SIMD 内在函数 SSE2/3 来加速它。我的代码具有这样的性质,以至于我需要将一些数据加载到 XMM 寄存器中并对其进行多次操作。当我查看生成的汇编代码时,似乎 GCC 不断将数据刷新回内存,以便重新加载 XMM0 和 XMM1 中的其他内容。我正在为 x86-64 编译,所以我有 15 个寄存器。为什么 GCC 只使用两个,我该怎么做才能让它使用更多?有什么方法可以“固定”寄存器中的某个值吗?我在变量定义中添加了“register”关键字,但生成的汇编代码是相同的。

0 投票
2 回答
6275 浏览

assembly - 为什么我不能更改段寄存器的值?(MASM)

我决定自学汇编语言。

我意识到如果我尝试更改任何段寄存器的值,我的程序将无法编译。

我发现的每一篇文章都说我确实可以改变至少 4 个段寄存器的值,那么给出了什么?

我真的只对为什么在这一点上感兴趣,我没有任何真正的目的来更改这些地址。

0 投票
1 回答
1787 浏览

windows - 汇编器文件作为使用 WDK 工具构建驱动程序的输入

如何获取要编译并链接到驱动程序构建的汇编程序文件。

澄清一点

源文件:

问题出现在z.asm file. NMAKE抱怨它不知道如何构建z.obj

所以问题是,如何将 asm 文件组装build并链接到bla.sys.

0 投票
8 回答
2658 浏览

c++ - 合并两个可执行文件

我有一个命令行可执行文件,它改变了我想从我的程序中使用的文件中的一些位。是否可以创建我自己的使用此工具的可执行文件并仅分发一个可执行文件?

[编辑] 澄清:

命令行工具获取偏移量和一些位,并更改给定文件中此偏移量的位。所以我想为一个将特定位更改为特定值的应用程序创建一个修补程序,所以我能做的就是写一个批处理文件之类的东西来完成它,但我想创建一个可执行文件,即将工具嵌入到一个使用特定值调用它的包装程序。

我可以在(windows)c\c++、asm 中编写包装器,但请不要使用 .net。

0 投票
5 回答
4960 浏览

assembly - 我在哪里可以找到 *all* MIPS 指令的描述

有谁知道一个网站,我可以在其中找到 32 位 MIPS 指令/操作码列表,具有以下功能:

  • 清楚地区分真正的操作码和汇编语言宏(伪指令)
  • 描述指令行为,包括取决于特权级别的差异。
  • 指示在哪个指令集修订版中引入/修订了指令(例如 MIPS I、MIPS II、MIPS32 等)
  • 包括特权指令,例如系统调用。

我知道有许多网站记录了指令集的“一部分”,主要用于教学目的。他们倾向于省略或仅部分描述浮点和特权指令。

如果您想知道,我正在查看 MIPS 处理器子集的 Verilog 代码,并试图弄清楚它在多大程度上符合任何真正的 MIPS 处理器的指令集!

0 投票
17 回答
428879 浏览

c++ - 如何从 gcc 中的 C/C++ 源代码获取汇编程序输出?

如何做到这一点?

如果我想分析某些东西是如何编译的,我将如何获得发出的汇编代码?