`

align num

 
阅读更多

align是个负责内存对齐的宏,它会补充一些数据以便下面的数据对齐。

 

对齐伪指令格式:

 

ALIGN  Num                                   (其中:Num必须是2的幂,如:2、4、8和16等)

 

伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量必须从下一个能被Num整除的地址开始分配。如果下一个地址正好能被Num整除,那么,该伪指令不起作用,否则,汇编程序将空出若干个字节,直到下一个地址能被Num整除为止。

 

align 32

会被展开成类似

times (((32) - (($-$$) % (32))) % (32)) nop

的代码。

 

它就是为了数据对齐的。使用影响对齐的数据类型后就需要用align填充一下,以便后面的数据可以对齐到边界上。

 

个人认为,定义一个段的时候用一下align32程序中如果定义了非标准的数据结构,譬如

db 1,2,3

而后面需要定义一个dd 4

那么建议就是

db 1,2,3

align 4

dd 4

这里的align 4是为了将4字节变量dd 4定义到4字节边界上。

 

段首最好是32字节对齐的。不过也不是必须。实模式每段是64kb大小,段寄存器中保存的是地址的高16位,ip寄存器保存的是地址的低16位。这样的话段寄存器每加1在ip相同的情况下地址相差16个字节。所以对齐到16字节边界可以让段的表现更稳定。

对齐到32字节边界应该是为了适应256位高速缓存而做的优化。

 

 

align 32不是必须的,有时候想起来就加了,有时候忘了就没加,程序运行都不会错。没必要较真,作者加了不代表那里必须得加,不代表有什么重要的理由需要加;没加也不代表那里就完全不需要。对于这些锦上添花的东西没必要太较真。

 

 

参考资料:

http://blog.csdn.net/erazy0/article/details/6058876

分享到:
评论

相关推荐

    HTML&JavaScript经典PPT 讲的都是重点

    num1=parseFloat(document.myform.num1.value); num2=parseFloat(document.myform.num2.value); if (op=="+") document.myform.result.value=num1+num2 ; if (op=="-") document.myform.result.value=num1-num...

    网页计算器

    function four(str_value,num0,num1){ if(str_value.indexOf("-")>0){ var arr=str_value.split("-"); num0=arr[0]*1; num1=arr[1]*1; document.form1.data.value=num0-num1; }else if(str_value.indexOf("+...

    table点击表头排序

    // <td align="center"><span id="idNum">ID</span></td> // <td> 名称</span> / 类型</span></td> // <td width="100" align="center">上传时间</span></td> // <td width="50" align="center">大小</span></...

    猜数题,JSP,全是JSP页面,没有SERVLET和BEAN

    <table width="670" border="0" height="401" align="center"> <tbody><tr> <div align="center"> 随即生成一个0到100之间的整数,请猜测! <p> <div align="center"> ...

    MTK定时器消息传递机制

    MSB(Most Significant Bit) is align_timer_mask */ U16 timer_id[SIMULTANEOUS_TIMER_NUM]; /* store the event_id that returns from evshed_set_event() */ eventid event_id[SIMULTANEOUS_TIMER_NUM]; ...

    计算器JSP 四则运算

    <div align="center"><input type="text" size="10" name="num1"> <select size="1" name="op"> <option value="+">+(加)</option> <option value="-">-(减)</option> *">*(乘)</option> ...

    Java相关课程系列笔记之十JSP学习笔记

    text -align: center; line-height: 16px; width: 16px; height: 16px; font-family: Arial; font-size: 12px; cursor: pointer; overflow: hidden; margin: 3px 1px; border: 1px solid #FF7300; }

    用JSP和数据库做的购物车的源程序

    align="center"><div align="center"><center><table border="1" cellpadding="2" cellspacing="0" width="100%" bordercolorlight="#FFB468" bordercolordark="#FFFFFF" bgcolor="#FFB468"> ...

    php的增删改查的源代码

    if(mysql_num_rows($result)>0){ ?> <table border="1" align="center" background="#99CCFFLL"> <td align="center">ID <td align="center">username <td align="center">address <td align="center">...

    PHP列出当前目录下所有文件大小及链接(utf-8)

    $num=0; //用来记录目录下的文件个数 $dirname='./'; //要遍历的目录名字 $dir_handle=opendir($dirname);...text-align:center">在<b>'.$dirname.'目录下的子目录和文件共有<b>'.$num.'个 占空间';

    as3.0做的3D效果Menu

    align(_num); if (_num>0 && event.target.x) { event.target.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); } else if (_num<0 && event.target.x>_center.x) { event.target....

    VB 计算器 VB计算器 VB.NET计算器 C#计算器

    Public Shared total, num1, num2 As String Public Shared sign As String Public Shared Sub click(ByVal a As String) total = total + a End Sub End Class Sub Count() Ent.num2 = TextBox1.Text ...

    javascript倒计时

    <div align="center"><b><font color="white" size=5>cloud4j's在线考试系统</font></b> <td>   ;"> style="Z-INDEX: 1; VISIBILITY: inherit; WIDTH: 100%; HEIGHT: 100...

    网上图书销售数据库+ASP

    '-------------------------------------------------------------------- ' Microsoft ADO ' ...' ' ' ' ADO constants include file for VBScript ' '------------------------------------------------------------...

    HTML技术文档

    (bynum || bynum > 0)) { alert("年份无效"); document.userfrm.byear.focus(); return false; } } } else { alert("年份必须以20打头"); return false; } if (byear || byear > 2120)...

    mfc可视化计算器编程

    主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 3. 建立的变量,控件的命名,对应的消息处理函数对应表 ...

    PHP实例之新闻发布系统源码下载

    $num = mysql_num_rows($result); $page_count = ceil($num/$page_size); //$offset = ($page_count-1)*$page_size; if(empty($_GET['page'])) { $page = 1; }else { $page = $_GET['page']; if($page) { $page...

    thl_r16_tinav2.0_hm1375验证通过_增加打印设备ID_20170824_1447.7z

    vfe_dbg(0,"num = %d , sd_0 = %p,sd_1 = %p\n",input_num,dev->ccm_cfg[input_num]->sd,dev->ccm_cfg[input_num-1]->sd); goto snesor_register_end; } if((dev->dev_qty > 1) && (input_num+1<dev->dev...

    hm1375_tinav2.1验证通过_增加设备ID的读取显示_20170825_1333没有外层目录.7z

    vfe_dbg(0,"num = %d , sd_0 = %p,sd_1 = %p\n",input_num,dev->ccm_cfg[input_num]->sd,dev->ccm_cfg[input_num-1]->sd); goto snesor_register_end; } if((dev->dev_qty > 1) && (input_num+1<dev->dev...

    ORACLE常见错误代码的分析与解决二

     ——————————————————————————– p align=”JUSTIFY”>ORA-01578:Oracle data block corrupted(file # num,block # num) 产生原因:当ORACLE访问一个数据块时,由于1、硬件的I/O...

Global site tag (gtag.js) - Google Analytics