- 浏览: 1224591 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (883)
- Spring (101)
- Swing (1)
- Mysql (21)
- Js (59)
- Jsp (2)
- Hibernate (19)
- Myeclipse (5)
- SqlServer 2000 (2)
- poi (15)
- Java (70)
- SSH (12)
- Html (47)
- Fusion Charts (1)
- C\C++ (2)
- 汇编 (36)
- Jquery (37)
- Struts2 (6)
- Ubuntu (16)
- powerDesinger (4)
- Jboss (3)
- JAX-RS (13)
- JAXB (5)
- JAX-WS (11)
- JMS (4)
- WebSocket (8)
- PHP (16)
- Flash (1)
- maven (3)
- Oracle (8)
- HttpClient (6)
- sqlserver (19)
- svn (5)
- Tomcat (3)
- Jdbc (3)
- EsayUi (11)
- 微信公众平台 (19)
- IIS (2)
- Freemarker (11)
- Comet (1)
- Spring MVC (85)
- JBoss Seam (3)
- 二维码 (9)
- Spring Security (4)
- Ehcache (3)
- Apache Shiro (7)
- jackson (16)
- JPA (8)
- jcaptcha (2)
- RSA (2)
- Ajax (6)
- 跟我学Shiro (0)
- Spring4 (19)
- 跟我学spring3 (0)
- css (32)
- excel (4)
- Filter (3)
- 微信公众帐号开发教程 (0)
- Android (6)
- log4j (6)
- 淘宝接口 (17)
- 支付集成 (3)
- 单点登录 (3)
- Html5 (27)
- 移动平台前端 (3)
- Linux (44)
- FusionCharts (27)
- Json Jackson Xml (5)
- 方培工作室-微信开发 (0)
- Apache与Tomcat与IIS整合 (10)
- Nginx (17)
- webService (2)
- apache (4)
- lucene (3)
- lodop (2)
- Shiro (3)
- zTree (2)
- ireport (12)
- Servlet3.0 (5)
- 前端美工 (19)
- AngularJS (1)
- C#开发微信门户及应用 (0)
- Shell (3)
- bat脚本 (16)
- Bootstrap (26)
- Less (10)
- photoshop (6)
- Redis (6)
- Mongodb (10)
- MyBatis (3)
- 数据结构 (0)
- 读写分离-主从复制 (0)
- JFinal (0)
- 百度地图api (3)
- hadoop-hbase-hive-spark (3)
- WebStorm (2)
- Quartz (5)
- ios (0)
- Mina (8)
- Android Studio (4)
- Ratchet教程 (0)
- 移动端重构系列 (1)
- cubic-bezier贝塞尔曲线CSS3动画工具 (1)
- nginx+tomcat+memcached集群 (0)
- 集群 (0)
- ZooKeeper (3)
- Dubbo (0)
- vpn (0)
- kafka (0)
- JVM垃圾回收机制 (0)
- 微信小程序 (0)
- Lua (0)
- Hystrix (0)
- Vue.js (0)
- mycat (0)
- Openresty (0)
- springBoot (0)
- 新分类 (0)
- guava (0)
- 大数据 (0)
- Sentinel (0)
最新评论
-
JackMacing:
中文怎么解决?
SpringMVC与iReport(JasperReports) 5.6整合开发实例 -
18335864773:
用pageoffice把.可以实现在线的文档操作.直接转pdf ...
转:使用jasperreport动态生成pdf,excel,html -
linhao0907:
推荐一款轻量开源的支付宝组件:https://github.c ...
关于Alipay支付宝接口(Java版) -
songronghu:
太好了,非常有用,谢谢分享~
Java ConcurrentModificationException 异常分析与解决方案 -
wzwahl36:
http://www.atool.org/json2javab ...
Java下利用Jackson进行JSON解析和序列化
32 位的寄存器容量是 4 字节, 如果内存中的数据都按 4*n 字节对齐, 肯定会加快吞吐速度;
但事实并非如此, 不同大小的数据可能会让寄存器别别扭扭地去处理, 从而降低了运行速度!
如果使用对齐, 就会浪费掉一些内存空间; 其实这是一个需要权衡 "速度" 与 "内存" 得失的问题.
准备使用的测试文件:
; Test11_1.asm .586 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data ;声明三个字节变量 v1 db 0 v2 db 0 v3 db 0 .code main proc ;三个字节变量的默认偏移地址如下(在没有对齐约束的情况下, 它们各占一个字节): PrintDec offset v1 ;4206592 PrintDec offset v2 ;4206593 PrintDec offset v3 ;4206594 ret main endp end main
ALIGN: 指定对齐边界
; Test11_2.asm .586 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data v1 db 0 align 4 ;让下一个变量的起始地址保证是 4 的倍数 v2 db 0 v3 db 0 .code main proc PrintDec offset v1 ;4206592 PrintDec offset v2 ;4206596 (!) PrintDec offset v3 ;4206597 ret main endp end main ;align 后面的参数是 2n, 还可测试下: 1、2、8、16
EVEN 是偶对齐, 相当于 ALIGN 2
; Test11_3.asm .586 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data v1 db 0 even ;(!) v2 db 0 v3 db 0 .code main proc PrintDec offset v1 ;4206592 PrintDec offset v2 ;4206594 (!) PrintDec offset v3 ;4206595 ret main endp end main
ORG 可以指定从当前位置跨越指定书目的字节再安排下一个数据:
; Test11_4.asm .586 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data v1 db 0 org 100 ;(!) v2 db 0 v3 db 0 .code main proc PrintDec offset v1 ;4206592 PrintDec offset v2 ;4206692 (!) PrintDec offset v3 ;4206693 ret main endp end main
这些伪指令不对局部变量产生影响, 因为伪指令作用在编译之前, 局部变量使用内存是程序运行之后的事.
关于局部变量的对齐和速度, 除了编译的工作外, 我们在安排变量类型和次序时也应该考虑到 "对齐" 的问题.
发表评论
-
学 Win32 汇编[34] - 宏汇编(1)
2011-12-22 13:25 754从接触 C 语言时, 我就不大喜欢宏; 但为了看懂别人的代码也 ... -
学 Win32 汇编[33] - 探讨 Win32 汇编的模块化编程
2011-12-22 13:23 584我觉得所谓的模块化有两种: "假模块化" ... -
学 Win32 汇编[32] - 子程序进阶
2011-12-20 09:49 696接: 学 Win32 汇编[9]: 子过程中的变量声明 ... -
学 Win32 汇编[31] - 结构与联合
2011-12-20 09:48 543结构和联合分别用 struct、union 定义, 都是 en ... -
学 Win32 汇编[30] - 条件及循环伪指令: .IF、.WHILE、.REPEAT 等
2011-12-20 09:48 2111.IF、.ELSEIF、.ELSE、.ENDIF: 条件伪指令 ... -
学 Win32 汇编[29] - 串指令: MOVS*、CMPS*、SCAS*、LODS*、REP、REPE、REPNE 等
2011-12-20 09:47 1961这里的 "串" 并不单指字符串, 包括所有 ... -
学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
2011-12-20 09:46 1457跳转指令分三类:一、无条件跳转: JMP;二、根据 CX、EC ... -
学 Win32 汇编[27] - 乘除指令: MUL、IMUL、DIV、IDIV
2011-12-19 09:03 1371MUL: 无符号乘 ;影响 OF、CF 标志位 ;指 ... -
学 Win32 汇编[26] - 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
2011-12-19 09:02 1457;INC(Increment): 加一;DEC(Decreme ... -
学 Win32 汇编[25] - 符号扩展指令: CBW、CWDE、CDQ、CWD
2011-12-19 09:01 1621CBW、CWDE、CDQ、CWD: 扩展指令 ;CBW ... -
学 Win32 汇编[24] - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD
2011-12-19 09:01 1442SHL、SHR、SAL、SAR: 移位指令 ;SHL( ... -
学 Win32 汇编[23] - 位测试与位扫描指令: BT、BTC、BTR、BTS、BSF、BSR
2011-12-19 09:00 2122BT、BTS、BTR、BTC: 位测试指令 ;BT(B ... -
学 Win32 汇编[22] - 逻辑运算指令: AND、OR、XOR、NOT、TEST
2011-12-14 13:23 1315AND: 逻辑与 ;该指令会置 CF=OF=0; 其结 ... -
学 Win32 汇编[21] - 传送指令: MOV、LEA、XCHG、XLATB、XLAT、MOVZX、MOVSX
2011-12-14 13:22 1104汇编指令的一般性要求: 1、两个操作数的尺寸必须一致; 2、操 ... -
学 Win32 汇编[20]: 洞察标志寄存器
2011-12-14 13:21 64815 14 13 12 11 10 9 8 7 6 ... -
学 Win32 汇编[19]: 查看二进制等相关函数
2011-12-14 13:20 598在 masm32.inc 中有这样几个函数的声明: by ... -
学 Win32 汇编[18]: 关于压栈(PUSH)与出栈(POP) 之二
2011-12-13 14:28 1011由于 "栈" 是由高到低使用的, 所以新压 ... -
学 Win32 汇编[17]: 关于压栈(PUSH)与出栈(POP) 之一
2011-12-13 14:27 1059记得刚学多线程的时候, 碰到一个结构: //Delphi ... -
学 Win32 汇编[16]: 常用寄存器的常规功能
2011-12-13 14:26 761通用寄存器 EAX ... -
学 Win32 汇编[15]: LOOP 与标号
2011-12-13 14:25 819Loop 是反复执行;从哪反复? 这要用到 "标号& ...
相关推荐
### DSP汇编伪指令概述 #### 一、引言 在DSP(数字信号处理器)的开发过程中,汇编语言作为一种底层编程技术,被广泛应用于性能敏感的应用场景中。为了提高编程效率并简化复杂的代码结构,DSP汇编语言支持一系列伪...
### 汇编伪指令汇总 #### 一、定义段的伪指令 1. **`.asect "sectionname", address`** - **说明**:该伪指令用于定义一个绝对命名且已被初始化的段,但现在已被标记为过时。 2. **`.bss symbol, sizeinwords[,...
4.3.2 对齐伪指令ALIGN 4.3.3 调整偏移量伪指令ORG 4.3.4 偏移量计数器的值 4.4 复合内存变量的定义 4.4.1 重复说明符DUP 4.4.2 结构类型的定义 4.4.3 联合类型的定义 4.4.4 记录类型的定义 4.4.5 数据类型的自定义 ...
### 汇编语言与基本伪指令知识点详解 #### 教学目的 - 掌握微型计算机汇编语言的基本格式和程序设计方法。 #### 教学要求 1. **熟悉汇编语言程序的结构**:了解语句类型及其格式。 2. **数据项及表达式的认识**:...
4. **EVEN和ALIGN指示符**:这些指示符可以确保代码对齐到特定的边界,提高某些处理器的效率。 5. **MASM宏指示符**:内联汇编不支持MASM的宏指令。 6. **段说明**:必须使用寄存器来指定段。 7. **类型和变量大小**...
汇编伪指令是汇编语言中用于辅助程序编译和组织的特殊指令,主要分为七类: - **段定义伪指令**:用于划分程序的不同部分,如.asect, .bss, .sect, .text, .usect 和 .data。 - **常数初始化伪指令**:用于在程序...
15. **对准伪操作**:`ALIGN`或`EVEN`伪指令用于使下一个字节地址成为偶数,确保数据在特定边界对齐。 16. **DOS功能调用**:在汇编语言中进行DOS功能调用时,如果要实现键盘输入并回显,同时返回输入字符的ASCII码...
需要注意的是,内联汇编不支持大多数 MASM 指示符,但支持 EVEN 和 ALIGN 指示符,可以在汇编代码中加入 NOP 指令使标号对齐到特定边界,以提高某些处理器的执行效率。 在内联汇编中,需要使用寄存器来说明段,跨越...
尽管如此,内联汇编支持EVEN和ALIGN指示符,它们可以通过插入NOP指令确保代码在特定边界对齐,提高某些处理器的指令加载效率。 #### 段引用 内联汇编中,段必须使用寄存器而非名称引用,段跨越需明确声明。 #### ...
- **Even伪指令**:用于确保变量对齐到偶地址。 - **Align伪指令**:NUM必须是2的幂,使内存对齐。 - **ORG伪指令**:指定内存变量的起始偏移量。 - **DUP重复说明符**:如BUFFER DB 100DUP(?),创建100个未知值...
1. **指令集**:内联汇编支持Intel Pentium 4和AMD Athlon的所有指令,以及通过`_EMIT`伪指令自定义的其他处理器指令。 2. **MASM表达式**:在内联汇编中,MASM表达式的使用提供了灵活性,但不支持MASM的全部特性...
尽管如此,`EVEN`和`ALIGN`指令可用于对齐目的,以优化处理器的指令读取。`_EMIT`伪指令可用来插入单字节数据,类似于MASM的`DB`指令。 内联汇编可以与C/C++语言元素混合使用,这意味着可以访问C/C++的变量和函数。...
不过,`EVEN`和`ALIGN`指令被保留,用于对齐代码,提高某些处理器的执行效率。 汇编语言指令可以直接引用C/C++的变量和表达式,比如`MOV EAX, 1`。通过`LENGTH`、`SIZE`和`TYPE`,可以获取C/C++数组的元素数量、...
static inline u32 NF_Read_ECC(void) { S3C2410_NAND * const nand = S3C2410_GetBase_NAND(); return(nand->NFECC); } static inline void NF_SetCE(NFCE_STATE s) { S3C2410_NAND * const nand = S3C...