Assembly
文章平均质量分 75
xiaocc2009
不做下一个谁,做最好的我
展开
-
汇编中的乘法指令
汇编中的乘法指令分为signed、unsigned指令两种。unsigned:mulsource//the source can be a 8、16、32-bits unsigned register or memory value你可能在想,只有一个数怎么进行乘法运算呢,其实还有一个乘数已经隐含的放在eax中,其中根据mul指令后缀b、w、l大小放入al,ax,eax中。由于乘法运算后产生的数比其中任何一个都大,所以一般用2倍于source位长的空间存放计算结果。例如:1.如果source是8-bits那原创 2011-05-09 12:47:00 · 9805 阅读 · 0 评论 -
汇编中的除法指令
AT&T汇编中的除法指令也分为两种:signed、unsignedunsigned:divdivisor//除数 a 8、16、32-bits register or memory value被除数隐含的放在ax、dx:ax、edx:eax中其中,除数的大小依据被除数大小有限制1.如果被除数是16bits,那么除数最大只能是8bits2.同理,被除数是32bits,那么除数最大是16bits3.同理,被除数的64bits,那么除数最大是32bitsdiv指令后缀依据divisor大小变化。除法指令的结果分为原创 2011-05-09 14:52:00 · 7523 阅读 · 1 评论 -
汇编中的结构体表示
<br />我认为,汇编中一切皆地址。<br />在c/c++使用很多的结构体,在汇编中是如何表示的呢?其实,在汇编中根本就没有什么结构体的概念,结构体本质就是一堆连在一起的数据。只不过有人把他们想象成一个整体,并以此产生结构体的概念,这与结构体中带有变长数组时候的情形一样:<br />struct Test{ int x; char c; int cnt; int data[0]; Test() { x = 0;原创 2011-05-18 20:02:00 · 5828 阅读 · 0 评论 -
函数返回值如何传递
一般情况下,函数返回值是通过eax进行传递的,但是eax只能存储4个字节的信息,对于那些返回值大于4个字节的函数,返回值是如何传递的呢?假设返回值大小为M字节1. M 2. 4 3. M > 8,如何传递呢?测试代码://test.cppstruct big_thing{ char str[64];};big_thing test(){ big_thing big; big.str[1] = 'c'; return big;}int原创 2011-04-28 14:54:00 · 2479 阅读 · 0 评论