汇编语言
shakesky
这个作者很懒,什么都没留下…
展开
-
一个ntohs函数的实现
众所周知ntohs用来将本机字节序列转换为网络字节序列,如何写一个高性能的实现呢?先写一个能正常工作的:代码如下short myntohs(short s){ BYTE high=(BYTE)s>>8; BYTE lower=(BYTE)s; s=lower<<8+high; return s;}int main(int argc, char* argv原创 2010-03-10 17:31:00 · 4849 阅读 · 1 评论 -
关于汇编的一些指令
看雪论坛看了《逆向RING0程序从这里开始》一文,汇编看得不是太流畅,对一些指令还要查资料。今特写下来已加强印象。rep:重复前缀,ecx为计数器进行重复,repz,repe:0标志被设置且ecx〉0重复repnz,repne: 0标志被清除且ecx〉0重复movsb,movsw ,movsd:从ESI指向的内存位置拷贝数据到EDI指向的内存位置。同时ESI和EDI寄存器自动增原创 2008-03-06 18:16:00 · 1611 阅读 · 0 评论 -
函数调用参数为引用的实现机制
本文阐述二个要点: 数组的引用,就是数组本身;即 char str[16]; 有 str ==& str; 成立 引用在汇编层级的实现即为取参数地址; 举例说明,看下面的代码:void testref(int &a,char * & str){int b=a;a=2;strcpy(str,"refello");原创 2011-11-14 12:50:00 · 1338 阅读 · 0 评论 -
汇编语言中PTR的含义及作用
汇编语言中PTR的含义及作用movax,bx;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD”movax,wordptr[bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出!所以,当两个操作数的原创 2011-04-23 11:14:00 · 25892 阅读 · 1 评论