问题标签 [basm]

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

delphi - Delphi + Assembly 数组访问

我在访问程序集(delphi)中的数组元素时遇到问题。

代码是:

可能有什么问题?

谢谢!

0 投票
5 回答
767 浏览

delphi - Delphi 读取溢出标志

如果我这样做

c 将等于 0,因为加法溢出。捕捉这个溢出的布尔值的最佳方法是什么?(a+b<a) or (a+b<b)? 一个非常好的方法是使用内联汇编程序,但我在汇编程序中并不多产(尽管我的猜测是它会包含类似的东西JO

0 投票
5 回答
2088 浏览

delphi - 在 Delphi 中使用 Assembly 的好资源?

问题

有没有学习如何在 Delphi 中使用汇编的资源?

背景资料

我找到并阅读了一些通用汇编和指令集参考(x86、MMX、SSE 等)。但是我发现很难在 Delphi 中应用这些信息。一般的事情,比如如何获取类属性的值等。

我希望在优化代码时可以选择使用汇编。

我明白:

  • 很难击败编译器。
  • 与低级装配优化相比,高级优化技术更有可能将性能提高几个数量级。(如选择不同的算法、缓存等)
  • 剖析至关重要。我正在使用Sampling Profiler进行实际性能分析,并使用 CPU 周期计数来获取低级细节。

我有兴趣学习如何在 Delphi 中使用汇编,因为:

  • 在工具箱中拥有另一个工具不会有什么坏处。
  • 这将有助于理解编译器生成的汇编输出。
  • 了解编译器在做什么可能有助于编写性能更好的帕斯卡代码。
  • 我很好奇。
0 投票
1 回答
1651 浏览

delphi - Delphi XE2 64bit:GraphicEx 中的内联 asm

这将如何从 asm 变成纯 delphi?我无法编译需要 GraphicEx 的组件,在 JPG 单元中给我一个错误,即内联汇编不支持 64 位。

0 投票
2 回答
781 浏览

delphi - 将 Delphi 风格的 ASM 翻译成英文?

我继承的一个最近的 Delphi 项目在 ASM 中有一个过程。我是一个完整的 ASM 新手,所以我不明白。我已经阅读了各种 ASM 指令以尝试破译程序流程,但我仍然不明白。

有 ASM 经验的人可以帮助我理解并将以下过程翻译成英文(然后我可以翻译回 Delphi,这样代码将来更容易阅读!!!)

Mem1的声明是一个Byte数组[0..15];. 并且Mem2 是 LongInt

这是程序:

编辑:感谢 Roman R,我已将 ASM 转换回 Delphi

0 投票
2 回答
463 浏览

delphi - 组装转换为 basm

我正在尝试将 CrapWOW 哈希从http://www.team5150.com/~andrew/noncryptohashzoo/CrapWow.html转换为 delphi 或者更确切地说是 basm。我的asm技能非常有限,但我认为这不会太难......

无论如何,在一些关于 asm 转换的网页的帮助下,我来到了这个,但它不起作用......特别是,对于最后一部分,我不知道如何转换。这是将寄存器分配给参数和返回参数吗?

我很高兴能在这方面得到一些帮助。

骑士杀手

0 投票
1 回答
799 浏览

delphi - 如何从delphi XE2中的绝对地址读取数据

假设我想以gs:$3064 位模式从绝对地址读取,所以 asm 代码如下所示:

...和编译器将此代码翻译为...

但我不想使用相对地址(rip + $30)。我希望编译器使用绝对地址并以这种方式编译:

(无论我是否使用gs:前缀,都是一样的!)

我该怎么做呢?

编辑:

我知道解决方法。我问是否存在任何命令来告诉编译器将位置地址作为绝对地址而不是相对地址。

编辑

到现在为止还挺好... :)

drhirsch 帮我找到了命令,现在编译器翻译:

对此:

这几乎没问题 :) 因为我想要短的 32 位操作码(看上面的操作码)instlonger long 64bit opcode。

有没有办法告诉编译器使用短的 32 位地址操作码而不是长的?

0 投票
2 回答
1607 浏览

delphi - 德尔福 XE2 总成

我有以下在 Delphi 2006 中工作的函数,但在 Delphi XE2 下它在处理时给出访问冲突错误或特权指令错误RET

我不太了解组装。问题是什么?

0 投票
3 回答
1135 浏览

delphi - 如果计算机在 Delphi 32 中支持 SSE2,如何探测计算机?

执行此操作的 c++ 方法在这里(在 Windows 下)。

相同的答案,但在使用 GCC的Linux 下。

据我了解,相关asm代码的摘录:

我在 BASM 不是很舒服。

我的问题:

我需要如下包装测试

请帮我。

0 投票
1 回答
2019 浏览

delphi - 使用 ASM 调用对象方法

为了更好地解释我要完成的工作,我将从可行的东西开始。

假设我们有一个过程可以调用另一个过程并传递一个字符串参数给它:

这是我们将调用的过程:

现在我可以像这样调用SaySomething(经过测试并且有效(: ):

我的问题是,我怎样才能实现类似的功能,但这次SaySomething应该是一个方法

所以,如果你还和我在一起......,我的目标是完成一个类似于:

我已经给了它很多镜头,但我的组装知识是有限的。