delphi与汇编】的更多相关文章

我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式汇编,利用嵌入汇编我们可以得到高效的程序代码,完成一些Delphi没有提供的底层功能.借贵报一方宝地与大家分享我的“研究”. 1.Delphi的位操作   每个学习C的朋友都会被告之C是“中级语言”,其位操作非常方便,而Pascal之流只适用于教学.但是Delphi中提供了一组位操作,可别以过去对P…
我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式汇编,利用嵌入汇编我们可以得到高效的程序代码,完成一些Delphi没有提供的底层功能.借贵报一方宝地与大家分享我的“研究”. Delphi的位操作 每个学习C的朋友都会被告之C是“中级语言”,其位操作非常方便,而Pascal之流只适用于教学.但是Delphi中提供了一组位操作,可别以过去对Pasca…
非科班出身, 现在才接触汇编, 惭愧呀, 好好学! 主选课本是清华大学王爽老师的<汇编语言>. 推荐 王爽老师的汇编网 汇编语言之前是机器语言. 机器语言是机器指令的集合, 机器指令是一系列二进制数字, 计算机将之转换为一系列高低电平, 而实现运算.在 PC 机上运行机器指令的是 CPU; 不同的 CPU 有不同的指令, 所以某种汇编语言也只是针对某系列的 CPU. 王爽老师举了一个用机器语言输出 "welcome to masm" 的例子: 00011110 101110…
参数传递方法 李纬的InsideVCL<第一章>中提到Windows定义的回调函数 typedef LRESULT (CALLBACK*WNDPROC)(HWND,UNIT,WPARAM,LPARAM) 为了加快回调函数执行的效率,Microsoft使用了CALLBACK修饰关键词来定义WNDPROC,而CALLBACK则是定义成FAR PASCAL. 那么为什么FARPASCAL就会更快执行呢?以下为我的解释 (1)cdecl: 通常是C/C++所使用缺省的参数传递方式,它的传递方式是由右到…
先人的DELPHI基础开发技巧 ◇[DELPHI]网络邻居复制文件 uses shellapi; copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false); ◇[DELPHI]产生鼠标拖动效果 通过MouseMove事件.DragOver事件.EndDrag事件实现,例如在PANEL上的LABEL: var xpanel,ypanel,xlabel,ylabel:integer; PANEL…
常用[属性] Action:该属性是与组件关联的行为,允许应用程序集中响应用户命令 Anchors:与组件连接的窗体的位置点 Align:确定组件的对齐方式 AutoSize:确定组件是否自动调整其大小 BiDiMode:(所有组件) 为从右向左写的语言提供支持 BoundsRect:定义组件边框矩形(只适用于运行时) Borderwidth:(窗口化组件)边框的宽度 BorberStyle:设置组件边框形状(样式) Brush:可确定组件的风格和颜色 Caption:使用该属性可指定标注组件的…
一段看上去“貌不惊人”的Delphi插入汇编代码,却需要授权许可,但是与经典的同类型函数比较,确实“身手不凡”. 研究代码的目的在于借鉴,本文通过分析,并用C++重写代码进行比较,再次证明这段代码效率较高的主要原因在于思路(或者算法),与语言本身效率关系不大. 今天打开Delphi2007的SysUtils.pas文件查看一个函数代码,偶尔看到字符串拷贝函数StrCopy中的插入汇编代码,感觉与记忆中Delphi7的同名函数中的代码大不相同,我的汇编水平虽不算精通,但自认还过得去,但粗粗看了一下…
一.什么是窗口类  在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC在调用Windows的API(CreateWindow或者CreateWindowEx)创建窗口之前,要求程序员必须定义一个窗口类(不是传统C++意义上的类)来规定所创建该窗口所需要的各种信息,主要包括:窗口的消息处理函数.窗口的风格.图标. 鼠标.菜单等.其定义如下: typedef struct…
软件名称:xTiNt 论坛发帖辅助软件 1.0 绿色版软件语言: 简体中文授权方式: 免费软件应用平台: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小: 220KB 图片预览: 软件简介:xTiNt绿色版是一款简单易于使用能够帮助用户进行论坛发帖的软件.本软件主要是主为了编程员在论坛上发帖而诞生,支持以html或ubb代码将程序源代码语法高亮显示.使源代码更加吸引别人,也更易于阅读与分析.目前已经支持vb,delphi,c,汇编四种语言.如果你发帖时…
DELPHI基础开发技巧 ◇[DELPHI]网络邻居复制文件 uses shellapi; copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false); ◇[DELPHI]产生鼠标拖动效果 通过MouseMove事件.DragOver事件.EndDrag事件实现,例如在PANEL上的LABEL: var xpanel,ypanel,xlabel,ylabel:integer; PANEL的Mo…
原文:http://www.jiamisoft.com/blog/index.php/3469-yingpanhaocpuruanjianjiami.html 计算机软件是一种特殊的产品,为了防止软件的非法复制.盗版,保护软件开发商的利益,就必须对软件进行加密保护.下面我就给大家介绍一个利用硬盘号和CPU序列号为软件加密的方法. 一.基于硬盘号和CPU序列号的软件加密技术的原理 软件会根据微机硬件参数给出该软件的序列号:用户需要把这一序列号用E-mail.电话或邮寄等方法寄给软件提供商或开发商,…
第一次记录:2019.9.15 完成了近期基本知识点的记录 第二次记录:2019.9.16 更新VB和的Delphi的汇编代码特点 介绍几个快捷键: Alt+B 断点编辑器,空格键可切换断点状态 ctrl+C 当位于某个call中时,用此快捷键返回调用这个CALL的地方 Alt+F9 当位于系统API领空时,用此快捷键返回程序领空 (小地址一般是可执行文件领空 如:004013F7 ,而大地址一般是系统DLL所在领空 如:7C8114AB) Ctrl+G 打开跟随表达式窗口 Ctrl+N 打开函…
PHP 学习计划流程2008-10-22 17:23PHP 学习计划流程1.看教程 (2-3月)大概1天1个章节,比如<PHP圣经>有32章,1个多月就看完了,当然后面的章节每章1天肯定看不完,所以2-3个月是合适的.看的过程中实际运行书中的例子是必须的,不要问为什么.2.读开源系统的代码,看源码分析(3-6个月):学css.javascript (2个月):discuz.phpwind论坛的源码,phpcms.dedecms的源码,1个系统读3个月,两个系统6个月读下来应该差不多.其实学完P…
开发工具:Delphi 10 Update2 1,在源代码中设置至少一个断点,目的让我们进入调试模式. 2,启动调试,当程序进入调试模式,停留在我们设定的断点处时候,使用快捷键"CTRL+ALT+D"就直接可以调出汇编代码窗口了.如果不想使用快捷键,你可以在菜单"View"->"Debug Windows"->"CPU Windows"->"Disassembly"打开汇编代码窗口.…
原文网址:http://www.crifan.com/source_insight_support_highlight_for_python_ruby_arm_batch_ppc_sql_tcl_delphi/ 用Souce Insight建立了一个项目,添加了一堆python的*.py文件后,发现当前不支持Python的语法高亮: 所以想要使得SI支持Python文件的语法高亮. [解决过程] 1.之前就折腾过,给si添加对于汇编文件语法高亮的支持,知道了就是去找到对应的配置文件,添加进来,然…
汇编与高级语言 1.      汇编基础知识 1.1.      寄存器 寄存器 用途 EAX,EBX,EDX,ECX 通用寄存器,由程序员自己指定用途,也有一些不成文的用法: EAX:常用于运算. EBX:常用于地址索引. ECX:常用于计数. EDX:常用于数据传递. EIP 指令寄存器,指出当前指令所在的地址. ESP 栈指针,指向当前线程的栈顶. EBP 栈基址指针,对调试起着很重要的作用. EDI,ESI 没有规定作什么用,一般用在源指针和目标指针的操作. FR 标志寄存器,由多个标志…
{ 前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了. 譬如: ADD AX,BX; 这相当于 Delphi 中的 AX := AX + BX; 另外提前来个列表 - Delphi 可以用汇编管理以下寄存器: 32 位寄存器: EAX EBX ECX EDX ESP EBP ESI EDI 16 位寄存器: AX BX CX DX SP BP SI DI 8 位寄存器 : AL BL CL DL AH BH CH DH 16 位段寄存器: CS DS S…
知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack). 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的.例如,用GetMem函数获取了一定大小的内存空间,则在使用完后,必须调用FreeMem函数将空间释放,否则就会发生所谓的“内存泄漏”.“借债还钱,天经地义”. 栈又称为“自动存储区”,其中的内存空间的分配与释放是由编译器和系统自动完成的,不需要程序员过问.函数调用时按值传递的参数所占空间.函数中的局部变量等,都是在栈中被分配空间的…
引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相关的接口即可,它也不必与使用服务的客户端进行过多的交互.这种良好的设计方式已经受到很广泛的应用. 早在Delphi 3的时候就引入了接口的概念,当时完全是因为COM的出现而诞生的,但经过这么多版本的进化,Delphi的接口已经成为Object Pascal语言的一部分,我们完全可以用接口来完成我们的…
program Project1; { Types and Structures Definition }type  WNDCLASSEX = packed record    cbSize: LongWord;    style: LongWord;    lpfnWndProc: Pointer;    cbClsExtra: Integer;    cbWndExtra: Integer;    hInstance: LongWord;    hIcon: LongWord;    hCu…
class function TObject.MethodAddress(const Name: ShortString): Pointer;asm        { ->    EAX     Pointer to class        }        {       EDX     Pointer to name }        PUSH    EBX        PUSH    ESI        PUSH    EDI        XOR     ECX,ECX      …
class function TObject.MethodAddress(const Name: ShortString): Pointer;asm        { ->    EAX     Pointer to class        }        {       EDX     Pointer to name }        PUSH    EBX        PUSH    ESI        PUSH    EDI        XOR     ECX,ECX      …
Function xxx(xxx):xxx;assembler;asm  XOR RAX , RAX  ...end;这样的可以. 0 0 引用 ・ 举报 ・ 管理 5t4rk   回复于 2013-01-06 16:44:17 #4 得分:13 引用 3 楼 kiboisme 的回复: Function xxx(xxx):xxx;assembler;asm  XOR RAX , RAX  ...end;这样的可以. 这种方式就是64位的.但是你不能同时编译这个工程为32和64位. 建议楼主分开…
absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var   Str: ];   StrLen: Byte absolute Str; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin   Str := 'abc';   Edit1.Text := IntToStr(StrLen); end; abstract //它允许你创建抽象的方法, 包括有抽象…
zw版·Halcon与delphi(兼谈opencv) QQ群 247994767(delphi与halcon) <Halcon与delphi>系列,早两年就想写,不过一方面,因为Halcon是售价高达数万欧元(不是人民币)的专业软件,知道的人不多,      另外一方面,个人琐事太多,一直没时间动笔,这次借国庆空闲,匆匆忙忙,开个头先.      标题本来准备用:<Halcon.opencv与delphi.python.vb.c++>      太杂,虽然现在流行长标题,还是简化…
本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var  Str: string[32];  StrLen: Byte absoluteStr; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin Str…
absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absolute Str; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin Str := 'abc'; Edit1.Text := IntToStr(StrLen); end; abstract //它允许你创建抽象的方法, 包括有抽…
第一部分   快速开发的基础 第1章   Delphi 5下的Windows编程    1 1.1   Delphi产品家族    1 1.2  Delphi是什么    3 1.2.1   可视化开发环境    3 1.2.2   编译器的速度和已编译代码的效率    4  1.2.3   编程语言的功能及其复杂性    4 1.2.4   数据库结构的灵活性和可扩展性    5 1.2.5   框架对设计和使用模式的扩充    5 1.3   历史回顾    5 1.3.1   Delphi…
一.提高查询效率先进行准备查询操作: CustomerQuery.Close; if not (CustomerQuery.Prepared) then -->查询是否已准备好 CustomerQuery.Prepare; -->查询准备 CustomerQuery.Open; -->执行查询 二.要在运行期访问参数,有三种方式可以选择:(适合BDE控件中的TQuery) (1)ParamByName: 按名称设置参数的值(2)Params: 按序号设置参数的值(3)Params.Par…
1 BASM概念简要  汇编语句由指令和零至三个表达式构成.表达式由常数(立即数).寄存器和标识符构成.例如: movsb        // 单指令语句 jmp @Here    // 一个表达式: 标识符 add eax,1    // 两个表达式: 寄存器和立即数 // 三个表达式: 寄存器, 标识符(内存地址), 立即数 imul edx, [ebx].RandSeed, 08088405H 一段BASM代码以ASM关键字开始,END关键字结束.中间有任意多个汇编语句. BASM代码通常…