Delphi中methodaddress的汇编代码解析】的更多相关文章

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      …
我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的.但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水. 下面我们主要分析一下ATL中的一些汇编代码. ATL中出现汇编代码主要是2处,一处是通过Thunk技术来调用类成员函数处理消息:还有一处是通过打开_…
在研究汇编时,需要自己写点汇编代码测试,用Ollydbg写每次加载程序就没了,不是很方便. 可以考虑直接在程序中写入汇编代码,只需要加上关键字“_asm”宏(C++代码中). 如下示例 编写环境 :vs2012 语言:C++ #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { printf("begin"); _asm { mov ch,al mov cl,ax } printf(; }…
转载自:http://blog.csdn.net/roland_sun/article/details/42921131 大家知道,用C或者C++等高级语言编写的程序,会被编译器编译成最终的机器指令.这中间,编译器会对代码自动进行优化.但是,这种优化往往不一定非常高效. 所以,出于性能优化的目的,对非常关键的代码,任然需要直接用汇编指令编写. 并且在C和C++中,是无法直接对寄存器进行操作的,如果要实现的功能需要频繁与底层硬件打交道,也需要用汇编指令编写. GCC编译器支持直接在C或者C++代码…
因为一些原因,需要进行encodeURIComponent和decodeURIComponent编码,在Delphi中找了一个,首先是发现不能正确编码+号,后面强制处理替换了,勉强可用. 后面发现多次使用后delphi自带的HttpEncode会报Out of Memory. 以上可能是我使用的不好,但没有找到解决办法. 后面想到直接采用运行JavaScript代码,找到了"万一的 Delphi 博客" 在 Delphi 中调用 JavaScript(2) - 万一 - 博客园 (cn…
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      …
一 . 使用Excel对象模型创建Excel文档: 1.创建简单的文档 try { 3 //创建Excel程序对象 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //设置创建WorkBook时,WorkBook包含表单个数 excel.SheetsInNewWorkbook = ; //创建WorkBook excel.Workbooks.A…
首先大概介绍BT网络运行的整体流程: 开始阶段,一个节点加入到网络中,并向tracker节点发送信息,tracker返回若干个邻居的列表 得到列表后,向每个邻居发送bitfiled信息,来获取他们的文件状态.接着确定需要的piece,并向拥有该 piece的邻居发送关注的请求消息.本地节点根据过去20s内邻居节点的带宽传输表现,选出前3,并把它们置为疏通状态,向他们发送块的请求. 当收到请求信息时,返回一个piece信息,注意如果本地节点上传少于10个块,就把当前请求入队,按队列顺序一个个请求处…
Shift+Ait+S  打开搜索 Ctrl+Ait+R 打开上次搜索结果…
源码 很简单的c语言代码,作用是交换两个数: #include <stdio.h> void swap(int * a, int * b) { *a = *a + *b - (*b = *a); return; } 汇编代码解析 在gcc编译环境下执行, gcc -S  -o test.s test.c 命令生成相关汇编代码. .file "test.c" .text .globl _swap .def _swap; .scl 2; .type 32; .endef _sw…