鱼C论坛

 找回密码
 立即注册
查看: 2898|回复: 4

汇编优化? 死循环不死机?

[复制链接]
发表于 2013-6-3 01:18:21 | 显示全部楼层 |阅读模式
4鱼币
第一个问题:
我想出的答案和书上答案不要样,(答案如下),我想知道谁写的好?怎么比较?看优化吗?
看编译的exe文件的大小?还是有软件去比较?

第二个问题:
关键课外的,有c语言编写一个死循环,点击编译,链接后的exe文件,看cpu使用率为100%
我复制10个刚才编写的exe文件,我报这必死的心态:L同时都运行,怎么不死机呢?为什么呢?
有人告诉我,程序把内存沾满后,就占虚拟内存,之后就死机了,不对吗?

题目如下:将字符串‘welcome to masm!’复制到它后面的数据区中
assume cs:code, ds:data

data segment
        db 'welcome to masm!'
        db '................'
data ends


我用的方法如下:                                         
start:        mov ax,data
                mov ds,ax
                mov bx,0
                       
                mov cx,16
        s:        mov al,bx
                mov [bx+16],al
                inc bx
                loop s
答案如下:
start:        mov ax,data
                        mov ds,ax
                        mov si,0
                        mov di,16
                       
                        mov cx,8
                s:        mov ax,[si]
                        mov [di],ax
                        add si,2
                        add si,2
                        loop s

最佳答案

查看完整内容

答案仅循环了8次,而你的答案循环了16,肯定答案效率高些。 你的答案只是换了一种寄存器寻址方式。 不能光看文件的大小,如果文件加壳压缩后,体积肯定小了。 得看CPU执行的次数。 C语言写的死循环程序,反复申请内存,对于32位以上的应用程序而言,无论怎样使用malloc与new,几乎不可能导致“内存耗尽”,只是操作系统速度变的缓慢了,因为32位操作系统支持“虚拟内存”,物理内存用完了,自动用硬盘空间顶替。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-3 01:18:22 | 显示全部楼层
答案仅循环了8次,而你的答案循环了16,肯定答案效率高些。
你的答案只是换了一种寄存器寻址方式。
不能光看文件的大小,如果文件加壳压缩后,体积肯定小了。
得看CPU执行的次数。
C语言写的死循环程序,反复申请内存,对于32位以上的应用程序而言,无论怎样使用malloc与new,几乎不可能导致“内存耗尽”,只是操作系统速度变的缓慢了,因为32位操作系统支持“虚拟内存”,物理内存用完了,自动用硬盘空间顶替。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-3 09:15:24 | 显示全部楼层
????   cx为什吗=8???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-3 09:28:17 | 显示全部楼层
start:        mov ax,data
                mov ds,ax
                mov bx,0
                        
                mov cx,16
        s:        mov al,bx                   ?????BX没有初值
                mov [bx+16],al              ?????BX为啥要加16
                inc bx                            ?????为啥把BX加1,应该加2
                loop s


:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@:@

你是新手吧???????
加Q回复我  1255243021
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-27 19:08:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 07:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表