basm相关内容

Delphi/ASM 代码与 64 位不兼容?

我有一些 OpenGL 的示例源代码,我想编译一个 64 位版本(使用 Delphi XE2)但是有一些 ASM 代码无法编译,我对 ASM 一无所知.这是下面的代码,我将两条错误消息放在失败的行上... //将一个像素从源复制到目标并交换 RGB 颜色值过程 CopySwapPixel(const Source, Destination: Pointer);汇编push ebx//[DCC E ..
发布时间:2021-11-25 06:33:45 C#

Delphi汇编器:了解结果寄存器

我在Delphi中搞乱了ASM。据我了解,EAX持有结果。接下来,我必须将RET放在最后,否则Result不正确(如果输入为0,则正确)。我在做什么错,或者我应该说,对此我不了解? function MSb(const Val:整数):整数; 标签 转到; asm CMP EAX,0 JNZ Go MOV EAX,-1 RET Go: BSR EBX,EAX ..
发布时间:2020-10-20 18:47:38 其他开发

英特尔x86汇编优化技术,用于将8位扩展为0或1的8个布尔字节

我花了相当长的时间学习汇编程序,并且试图将一些简单的程序\函数重写为它,以查看性能好处(如果有).我的主要开发工具是Delphi 2007,第一个示例将使用该语言,但也可以轻松将其翻译为其他语言. 问题表示为: 我们给出了一个无符号字节值,其中八个位中的每个位代表屏幕一行中的一个像素.每个单个像素可以是实心(1)或透明(0).换句话说,我们将8个像素打包成一个字节. 我想将这些像素解压 ..
发布时间:2020-09-12 22:20:09 其他开发

在Delphi中的asm过程结束时要恢复哪些CPU寄存器

在汇编代码中编写Delphi程序或函数时,在程序结束时必须保存哪些寄存器并恢复到原始值? 当调用另一个Delphi程序或函数从(inline)汇编代码,我可以期待其他功能与寄存器有关?哪些寄存器将被恢复到原来的值,哪些不可以? (显然,同样的答案将适用于这两个问题) 我假设默认调用约定。我知道 EAX 用于32位返回值。看看SysUtils.pas中的asm代码,似乎 EBX , ..
发布时间:2017-04-24 22:07:19 Delphi

英特尔x86组装优化技术在示例问题中

我正在学习汇编器一段时间,我试图重写一些简单的程序\函数来查看性能优势(如果有的话)。我的主要开发工具是Delphi 2007,第一个例子将是这种语言,但是可以轻松地将其翻译成其他语言。 问题描述如下: 我们给出了一个无符号字节值,其中八位中的每一个表示屏幕的一行中的像素。每个单个像素可以是固体(1)或透明(0)。所以换句话说,我们有8个像素打包在一个字节值。 我想将这些像素解压缩成 ..
发布时间:2017-04-24 03:12:16 Delphi

Delphi汇编函数返回长字符串

我正在Delphi学习内联汇编程序,为此我发现了这个文章非常有帮助。 现在我想编写一个返回一个长字符串的程序集函数,特别是一个 AnsiString (为简单起见)。我写了 function myfunc:AnsiString; asm // eax = @result mov edx,3 mov ecx,1252 call System。@ LStrSetLen ..
发布时间:2017-04-23 23:17:10 Delphi

使用ASM调用对象方法

为了更好地解释什么,我试图完成,我将开始与一些作品。 假设我们有一个可以调用其他程序和字符串参数传递给它一个过程: 程序CallSaySomething(AProc:指针; const的安​​勤:字符串); VAR LADDR:整数; 开始 LADDR:=整数(PChar类型(安勤)); ASM MOV EAX,LADDR CALL AProc; 结束; 结束; ..
发布时间:2016-07-18 21:00:38 .NET Framework

寄存器是什么CPU在德尔福的ASM程序结束时恢复

当编写汇编code,其注册必须在程序结束?保存和恢复为原始值一个Delphi过程或函数 当调用来自(内置)组装code另一个德尔福过程或函数,我能想到的其他功能与寄存器呢?哪些寄存器将恢复到其原始值,哪些不可以? (显然,相同的答案也适用于这两个问题) 我假设的默认调用的Delphi约定。我知道, EAX 用于32位的返回值。并期待在SysUtils.pas的ASM code,似乎 EBX ..
发布时间:2016-07-18 20:41:53 .NET Framework

在样本问题英特尔x86汇编优化技术

我学习汇编很长一段时间,我试图重写一些简单的程序\\功能,它性能优势(如果有的话)。我的主要开发工具是德尔福2007年第一例将这种语言,但他们可以很容易地翻译成其他语言。 问题的状态为: 我们已经给一个无符号字节值,其中每个八位的重新presents中的画面的一个行的像素。每个单个像素可以是固体(1)或透明的(0)。因此,换句话说,我们有装在一个字节值8个像素。 我想这些像素解压到在最小的像 ..
发布时间:2016-07-18 20:36:06 .NET Framework

FLD指令64位

我有在64位指令FLD一个小问题... 要加载双精度值ST0寄存器堆栈指针FPU,但它似乎是不可能的。 在Delphi的32倍,我可以用这code: 函数DoSomething的(X:双人间):双; ASM FLD点¯x // 做一点事 .. FST结果结束; 不幸的是,在64位,同样code不起作用。 解决方案 在64位模式下浮点参数在XMM寄存器传递。因此,当德尔福试 ..
发布时间:2016-07-18 20:24:34 .NET Framework

德尔福/ ASM code与64位兼容?

我有一些示例源$ C ​​$ C的OpenGL,我想编写一个64位版本(使用Delphi XE2),但有一些ASM code的编译失败,而我什么都不知道ASM。这里的$ C $低于C,而且我把两个错误信息上失败...... 行 //从复制源的像素到dest和交换的RGB颜色值 程序CopySwapPixel(const的来源,目的地:指针); ASM 按EBX // [DCC错误]:欧普c ..
发布时间:2015-11-28 12:10:16 其他开发