问题标签 [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.
delphi - Delphi + Assembly 数组访问
我在访问程序集(delphi)中的数组元素时遇到问题。
代码是:
可能有什么问题?
谢谢!
delphi - Delphi 读取溢出标志
如果我这样做
c 将等于 0,因为加法溢出。捕捉这个溢出的布尔值的最佳方法是什么?(a+b<a) or (a+b<b)
? 一个非常好的方法是使用内联汇编程序,但我在汇编程序中并不多产(尽管我的猜测是它会包含类似的东西JO
)
delphi - 在 Delphi 中使用 Assembly 的好资源?
问题
有没有学习如何在 Delphi 中使用汇编的资源?
背景资料
我找到并阅读了一些通用汇编和指令集参考(x86、MMX、SSE 等)。但是我发现很难在 Delphi 中应用这些信息。一般的事情,比如如何获取类属性的值等。
我希望在优化代码时可以选择使用汇编。
我明白:
- 很难击败编译器。
- 与低级装配优化相比,高级优化技术更有可能将性能提高几个数量级。(如选择不同的算法、缓存等)
- 剖析至关重要。我正在使用Sampling Profiler进行实际性能分析,并使用 CPU 周期计数来获取低级细节。
我有兴趣学习如何在 Delphi 中使用汇编,因为:
- 在工具箱中拥有另一个工具不会有什么坏处。
- 这将有助于理解编译器生成的汇编输出。
- 了解编译器在做什么可能有助于编写性能更好的帕斯卡代码。
- 我很好奇。
delphi - Delphi XE2 64bit:GraphicEx 中的内联 asm
这将如何从 asm 变成纯 delphi?我无法编译需要 GraphicEx 的组件,在 JPG 单元中给我一个错误,即内联汇编不支持 64 位。
delphi - 将 Delphi 风格的 ASM 翻译成英文?
我继承的一个最近的 Delphi 项目在 ASM 中有一个过程。我是一个完整的 ASM 新手,所以我不明白。我已经阅读了各种 ASM 指令以尝试破译程序流程,但我仍然不明白。
有 ASM 经验的人可以帮助我理解并将以下过程翻译成英文(然后我可以翻译回 Delphi,这样代码将来更容易阅读!!!)
Mem1的声明是一个Byte数组[0..15];. 并且Mem2 是 LongInt。
这是程序:
编辑:感谢 Roman R,我已将 ASM 转换回 Delphi
delphi - 组装转换为 basm
我正在尝试将 CrapWOW 哈希从http://www.team5150.com/~andrew/noncryptohashzoo/CrapWow.html转换为 delphi 或者更确切地说是 basm。我的asm技能非常有限,但我认为这不会太难......
无论如何,在一些关于 asm 转换的网页的帮助下,我来到了这个,但它不起作用......特别是,对于最后一部分,我不知道如何转换。这是将寄存器分配给参数和返回参数吗?
我很高兴能在这方面得到一些帮助。
骑士杀手
delphi - 如何从delphi XE2中的绝对地址读取数据
假设我想以gs:$30
64 位模式从绝对地址读取,所以 asm 代码如下所示:
...和编译器将此代码翻译为...
但我不想使用相对地址(rip + $30)
。我希望编译器使用绝对地址并以这种方式编译:
(无论我是否使用gs:
前缀,都是一样的!)
我该怎么做呢?
编辑:
我知道解决方法。我问是否存在任何命令来告诉编译器将位置地址作为绝对地址而不是相对地址。
编辑
到现在为止还挺好... :)
drhirsch 帮我找到了命令,现在编译器翻译:
对此:
这几乎没问题 :) 因为我想要短的 32 位操作码(看上面的操作码)instlonger long 64bit opcode。
有没有办法告诉编译器使用短的 32 位地址操作码而不是长的?
delphi - 德尔福 XE2 总成
我有以下在 Delphi 2006 中工作的函数,但在 Delphi XE2 下它在处理时给出访问冲突错误或特权指令错误RET
。
我不太了解组装。问题是什么?
delphi - 使用 ASM 调用对象方法
为了更好地解释我要完成的工作,我将从可行的东西开始。
假设我们有一个过程可以调用另一个过程并传递一个字符串参数给它:
这是我们将调用的过程:
现在我可以像这样调用SaySomething(经过测试并且有效(: ):
我的问题是,我怎样才能实现类似的功能,但这次SaySomething应该是一个方法:
所以,如果你还和我在一起......,我的目标是完成一个类似于:
我已经给了它很多镜头,但我的组装知识是有限的。