对于我的BigInteger代码,对于非常大的BigIntegers而言,输出速度很慢。 因此,现在我使用递归分治算法,该算法仍需要2'30“才能将当前最大的素数转换为超过2200万个数字的十进制字符串(但仅需135毫秒即可将其转换为十六进制字符串) 。 我仍然想减少时间,因此我需要一个 ...
对于我的BigInteger代码,对于非常大的BigIntegers而言,输出速度很慢。 因此,现在我使用递归分治算法,该算法仍需要2'30“才能将当前最大的素数转换为超过2200万个数字的十进制字符串(但仅需135毫秒即可将其转换为十六进制字符串) 。 我仍然想减少时间,因此我需要一个 ...
我在将Delphi BASM32代码移植到FPC时遇到了一个问题: 上面的代码在Delphi XE中编译并按预期工作; FPC在MUL EAX,EDX线上输出编译时错误: 错误:Asm:[mul reg32,reg32]操作码和操作数的无效组合 我正在使用Lazaru ...
使用VBROADCASTS命令在AVX中很容易,如果值是双精度或浮点数,则在SSE中很容易。 如何向Delphi ASM中的XMM寄存器中的每个插槽广播一个8位值? ...
我在Delphi中搞乱了ASM。 据我了解,EAX持有结果。 在下文中,我必须将RET放在最后,否则Result不正确(如果输入为0,则正确)。 我在做什么错,或者我应该说,对此我不了解吗? 如果我说以下内容: 然后我得到以下编译: 但是,我上面的代码具有以下后记: ...
我正在将32位Delphi BASM代码移植到64位FPC(Win64目标操作系统),并想知道为什么下一条指令不能在64位FPC中编译: 可能的解决方法是: 我只是不明白Win64目标中的32位LEA指令有什么问题(它在32位Delphi中编译正常,因此它是正确的CPU指令)。 ...
我试图在汇编程序(XE3)中重写TList.IndexOf方法。 这是我的代码 当然我想直接使用Count或List这样的属性。 我理解为什么编译器拒绝提供对私有字段FCount和FList的访问,但是如何访问相应的属性? Count,Self.Count和[eax] .Count ...
根据“在Delphi中使用汇编程序” , eax将包含Self 。 但是,如图所示, eax的含量为0。 我想知道出了什么问题? ...
我试图划分两个数字50和5.这是我的代码: 它在Delphi中给了我一个DivisionByZeroException异常。 有人能告诉我我做错了什么吗? ...
我正在研究JIT编译器,并试图找出如何为托管类型(如字符串)输出正确的清理块。 对于具有一个类型为string局部变量的函数,清理块的反汇编如下所示: 不幸的是,我没有任何好的方法来获取@UStrClr和@HandleFinally的地址,所以我的JITter可以插入它们。 它们 ...
我有一些Delphi /汇编代码为Win32,Win64和OSX 32编译和工作正常(XE2)。但是,因为我需要它在Linux上工作,我一直在寻找它的FPC版本(到目前为止,Win32) / 64,Linux32 / 64)。 总的来说,它运行良好,但我无法工作的一件事是调用/跳转到Del ...
我试图运行以下, 它提供了对movaps的访问冲突,据我所知,如果内存位置为16对齐,则可以信任movaps 。 如果movups (不需要对齐),它没有问题。 所以我的问题是,在Delphi XE3中,{$ CODEALIGN}在这种情况下似乎不起作用。 编辑 很奇 ...
我在x64位中的FLD指令有一点问题...想要将st0加载到st0寄存器中的堆栈指针FPU,但它似乎是不可能的。 在Delphi x32中,我可以使用以下代码: 不幸的是,在x64中,相同的代码不起作用。 ...
我在我不理解的Delphi XE3中使用64位嵌入式汇编程序遇到了这个问题。 我试过了,它可以在32位和64位上使用 但是,这仅适用于32位而不适用于64位,它可以在64位进行编译,但不能返回两个整数之和的正确结果。 我知道以前的FPU代码(例如FLD,STP)可在32位上 ...
我有个问题。 我有以下用ASM编写的x86 delphi代码。 我需要将此端口移植到AMD64吗? 我从未进行过汇编编程,没有人知道端口将是什么,或者我将如何更改它。 ...
如何在以下函数中正确存储n ? 由于使用一次后, n的值由于某种原因而改变。 ...
我需要在 Delphi 中编写 asm 函数来搜索最大数组元素。 所以那是我写的。 这里的问题很少。 首先 - mov ecx, len在这里工作不正常。 实际上它替换了ECX值,而不是len值! 如果我只是写一个例子mov ecx, 5出现 5 。 第二 - 我在 5 个元素的数组上测试这个函 ...
我希望能够将单行ASM转换为shellcode。 IE: 我该怎么做,并且能够正确转换这个shellcode,以便我可以将它存储在delphi应用程序的变量中。 IE: ...
考虑这种典型的方法跟踪代码(简化说明): 这是按预期工作的。 输出是: 进入F1 做一些事...... 离开F1 - 结果= Booyah! 我现在正在寻找一种方法来最小化调用TraceMethod()所需的参数数量,理想情况下允许我完全跳过与Result相关 ...
如何在Delphi XE或XE2下使用非常快速的英特尔POPCNT指令在16/32/64位字内实现1位计数? 是否存在可直接访问此指令的库例程? 有人可以写一个演示asm部分来说明它的使用吗? 最后,64位Delphi有哪些选项(没有可用的asm)? 提前谢谢你 ...
我有一些OpenGL的示例源代码,我想编译64位版本(使用Delphi XE2)但是有一些ASM代码无法编译,我对ASM一无所知。 这是下面的代码,我将两条错误消息放在失败的行上...... ...