汇编编程中的代码优化与模块化构建
1. 程序内数据布局的优势
在程序中直接放置数据,能够方便地将程序定义从一个项目复制到另一个项目,同时不会遗漏关键的 EOL 字符表。以 Newlines 程序为例,由于只有该程序自身会使用 EOLs 表,将其放在更显眼的 .data 段并无益处。虽然 EOLs 表从技术层面并非局部数据(调用 Newlines 时它不会被放在栈上),但它“看起来”像局部数据,能避免 .data 和 .bss 段因仅被单个程序引用的数据而变得杂乱。
2. 局部标签与跳转长度
随着程序变得更长、更复杂,意外复用标签的情况迟早会出现。为解决这一问题,NASM 引入了局部标签。局部标签基于这样一个事实:汇编中除子程序和主要部分的名称外,几乎所有标签本质上都是“局部”的,即它们仅被与其非常接近的跳转指令引用,通常是紧密循环的一部分,且往往只在一处被引用。
以下是 hexdump2.asm 主程序中的一个示例:
Scan:
xor eax,eax
; Clear EAX to 0
mov al,byte[Buff+ecx]
; Get a byte from the buffer into AL
mov edx,esi
; Copy total counter into EDX
and edx,0000000Fh
; Mask out lowest 4 bits of char counter
call DumpChar
; Call the char poke procedure
; Bump the buffer pointer to the next character
超级会员免费看
订阅专栏 解锁全文
4万+

被折叠的 条评论
为什么被折叠?



