社区
汇编语言
帖子详情
如何禁止masm优化?
TaiJi1985
2006-04-05 11:04:56
我将一个vc程序和一个masm编写的汇编程序 连接后,用vc跟踪反汇编代码。
发现用masm32编译的汇编代码被弄得乱七八糟了。masm是不是默认优化代码啊?
如何关闭优化呢?
谢谢!
...全文
222
4
打赏
收藏
如何禁止masm优化?
我将一个vc程序和一个masm编写的汇编程序 连接后,用vc跟踪反汇编代码。 发现用masm32编译的汇编代码被弄得乱七八糟了。masm是不是默认优化代码啊? 如何关闭优化呢? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TaiJi1985
2006-06-08
打赏
举报
回复
问题已经解决,谢谢各位捧场,给分!
TaiJi1985
2006-04-08
打赏
举报
回复
晕死,我过了一天后,又调发现没有问题了,一个问题又隐藏了起来了。
现在把源代码贴出来。
----------
这是一个进程切换的函数,寄存器的切换
.386
.model flat
.data
newthread dd 0
oldthread dd 0
save_eax dd 0
save_ebx dd 0
.code
;;;;const ;;;;;;;;
REG_SAVESIZE equ 8
REG_EAX equ 0
REG_EBX equ 4
REG_ECX equ 8
REG_EDX equ 12
REG_ESP equ 16
REG_EBP equ 20
REG_ESI equ 24
REG_EDI equ 28
START_PROC equ 32
;;;;;end const ;;;;;
; esp + 4 old
; esp + 8 new
; c: SWITCH(old,new)
;
;;;;;;;;;;;;;;;;;;;
_SWITCH proc
mov save_eax,eax ;;save eax
mov eax,[esp+4] ;; mov address of old thread to eax
mov oldthread,eax ;; mov address of old thread to val oldthread
mov [eax+REG_EBX],ebx
mov [eax+REG_ECX],ecx
mov [eax+REG_EDX],edx
mov ebx,[esp] ; ret address! ,save to bx
mov [eax+START_PROC],ebx ;;[esp] contain ret address!,save it!
mov [eax+REG_ESP],esp ;;
mov [eax+REG_EBP],ebp
mov [eax+REG_ESI],esi
mov [eax+REG_EDI],edi
mov eax,save_eax ;; recover eax
mov [esp+4],eax ;; save eax
;;set reg
mov eax,[esp+8] ;; mov address of new thread to eax
mov newthread,eax ;; mov address of new thread to val new thread
mov ebx,REG_EBX[eax]
mov ecx,REG_ECX[eax]
mov edx,REG_EDX[eax]
mov esp,REG_ESP[eax]
mov ebp,REG_EBP[eax]
mov esi,REG_ESI[eax]
mov edi,REG_EDI[eax];;
mov save_eax,eax ;;save eax
mov eax,START_PROC[eax] ;return address
mov [esp],eax ;set return address
mov eax,save_eax ;;recover eax
mov eax,REG_EAX[eax]
ret
_SWITCH endp
end
-------------------------------
原先,写的是
.386
.model flat
.data
newthread dd 0
oldthread dd 0
save_eax dd 0
save_ebx dd 0
.code
;;;;const ;;;;;;;;
REG_SAVESIZE equ 8
REG_EAX equ 0
REG_EBX equ 4
REG_ECX equ 8
REG_EDX equ 12
REG_ESP equ 16
REG_EBP equ 20
REG_ESI equ 24
REG_EDI equ 28
START_PROC equ 32
;;;;;end const ;;;;;
; esp + 4 old
; esp + 8 new
; c: SWITCH(old,new)
;
;;;;;;;;;;;;;;;;;;;
_SWITCH proc
mov save_eax,eax ;;save eax
mov eax,[esp+4] ;; mov address of old thread to eax
mov oldthread,eax ;; mov address of old thread to val oldthread
mov REG_EBX[eax],ebx
mov REG_ECX[eax],ecx
mov REG_EDX[eax],edx
mov ebx,[esp] ; ret address! ,save to bx
mov START_PROC[eax],ebx ;;[esp] contain ret address!,save it!
mov REG_ESP[eax],esp ;;
mov REG_EBP[eax],ebp
mov REG_ESI[eax],esi
mov REG_EDI[eax],edi
mov eax,save_eax ;; recover eax
mov [esp+4],eax ;; save eax
;;set reg
mov eax,[esp+8] ;; mov address of new thread to eax
mov newthread,eax ;; mov address of new thread to val new thread
mov ebx,REG_EBX[eax]
mov ecx,REG_ECX[eax]
mov edx,REG_EDX[eax]
mov esp,REG_ESP[eax]
mov ebp,REG_EBP[eax]
mov esi,REG_ESI[eax]
mov edi,REG_EDI[eax];;
mov save_eax,eax ;;save eax
mov eax,START_PROC[eax] ;return address
mov [esp],eax ;set return address
mov eax,save_eax ;;recover eax
mov eax,REG_EAX[eax]
ret
_SWITCH endp
end
fhb13
2006-04-05
打赏
举报
回复
你是不是用了宏汇编指令?
建议你用存汇编试试。
大熊猫侯佩
2006-04-05
打赏
举报
回复
masm 源代码贴出来。
汇编软件
masm
611
6. **
优化
选项**:
MASM
611提供了一些编译选项,用于
优化
生成的目标代码,提升程序运行效率。 **学习与使用
MASM
611** 学习
MASM
611需要掌握基本的汇编语言语法、计算机体系结构知识,特别是80x86指令集,以及Windows...
MASM
50.
MASM
51.
MASM
60.
MASM
611.
MASM
611FULL.
MASM
614.
MASM
615工具
标题中的“
MASM
50.
MASM
51.
MASM
60.
MASM
611.
MASM
611FULL.
MASM
614.
MASM
615工具”指的是Microsoft Macro Assembler(
MASM
)的不同版本。
MASM
是微软公司开发的一款汇编语言编译器,用于将汇编语言源代码转换为机器可执行...
masm
615和
masm
5
汇编语言的学习和应用是理解计算机工作原理的重要步骤,尤其是在系统编程、设备驱动开发以及性能
优化
等领域。本文将详细介绍
masm
615和
masm
5这两个汇编编译器,并探讨它们在汇编指令学习中的应用。 首先,让我们来看...
masm
6.11与
masm
6.15安装包
- **更新内容**:相对于6.11版,
MASM
6.15在1994年发布,主要针对Windows 95和Windows NT进行了
优化
,支持更多新特性。 - **改进与增强**:增加了对 Pentium 处理器的支持,包含更多新的汇编指令。此外,
MASM
6.15的...
masm
masm
6.15 64位
综上所述,
MASM
6.15 64位版本是一个强大的汇编语言编译器,适用于64位系统的开发,对于那些需要底层控制和性能
优化
的项目,它是一个不可或缺的工具。通过学习和掌握
MASM
,开发者能够更好地理解计算机硬件的工作机制...
汇编语言
21,497
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章