| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 963 人关注过本帖
标题:各位前辈露露脸帮下忙 谢谢了
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
    int a = 5, j = 0;
004113BE  mov         dword ptr [a],5
004113C5  mov         dword ptr [j],0
    j = (++a)+(++a)+(++a);
004113CC  mov         eax,dword ptr [a]
004113CF  add         eax,1
004113D2  mov         dword ptr [a],eax
004113D5  mov         ecx,dword ptr [a]
004113D8  add         ecx,1
004113DB  mov         dword ptr [a],ecx
004113DE  mov         edx,dword ptr [a]
004113E1  add         edx,1
004113E4  mov         dword ptr [a],edx
004113E7  mov         eax,dword ptr [a]
004113EA  add         eax,dword ptr [a]
004113ED  add         eax,dword ptr [a]
004113F0  mov         dword ptr [j],eax

可以说等于22应该算是VC6 debug版的一个bug 不过也可以那么理解啊

以上是VS2008 debug版的汇编代码 结果等于24 是三个8加起来
2012-02-20 21:51
wjfko
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2012-2-19
收藏
得分:0 
这个应该算是VC6的BUG吧
2012-02-20 21:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用wtwj1314在2012-2-20 21:48:34的发言:

听口气就是高手,我们新手,呵呵.你能说一下Turb C++3.0的编译过程吗

我不是高手

TC我只有个2.0、、、、、、、、、

TC嘛 肯定得到的是16位程序

用的IDA逆的

push    si
push    di
mov     si, 5
xor     di, di
inc     si
inc     si
inc     si
mov     di, si
add     di, si
add     di, si
push    di
mov     ax, 194h
push    ax              ; format
call    _printf

三次递增然后加起来 就是8+8+8啦

从代码优化角度讲挺好的 没有内存操作诶 赞一个。。

2012-02-20 21:55
wtwj1314
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2012-2-14
收藏
得分:0 
运算过程我知道,下面这些是什么?
push    si
push    di
mov     si, 5
xor     di, di
inc     si
inc     si
inc     si
mov     di, si
add     di, si
add     di, si
push    di
mov     ax, 194h
push    ax              ; format
call    _printf

2012-02-20 22:01
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用wtwj1314在2012-2-20 22:01:30的发言:

运算过程我知道,下面这些是什么?
push    si
push    di
mov     si, 5
xor     di, di
inc     si
inc     si
inc     si
mov     di, si
add     di, si
add     di, si
push    di
mov     ax, 194h
push    ax              ; format
call    _printf

是汇编 呵呵
2012-02-20 22:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2012-2-20 21:55:37的发言:


我不是高手

TC我只有个2.0、、、、、、、、、

TC嘛 肯定得到的是16位程序

用的IDA逆的

push    si
push    di
mov     si, 5
xor     di, di
inc     si
inc     si
inc     si
mov     di, si
add     di, si
add     di, si
push    di
mov     ax, 194h
push    ax              ; format
call    _printf

三次递增然后加起来 就是8+8+8啦

从代码优化角度讲挺好的 没有内存操作诶 赞一个。。

这段代码实现的就是5三次递增 然后加起来 也就是8+8+8 不过是用的16位汇编啦
2012-02-20 22:07
wtwj1314
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2012-2-14
收藏
得分:0 
谢了,我才刚学了10天的C,汇编是什么还不知道
2012-02-20 22:10
为了未来
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:26
专家分:20
注 册:2012-2-18
收藏
得分:0 
有点懂了 非常感谢前辈指教  膜拜ING
2012-02-21 12:47
sanjianfei
Rank: 2
等 级:论坛游民
帖 子:48
专家分:53
注 册:2012-2-21
收藏
得分:0 
visual 2010也是
2012-02-21 22:08
LINAS
Rank: 2
来 自:中国江苏常州
等 级:论坛游民
帖 子:19
专家分:21
注 册:2012-2-15
收藏
得分:0 
我是路过的,随便膜拜下高手们

新手学c语言,求大大帮忙指导。。。。。。
2012-02-21 23:08
快速回复:各位前辈露露脸帮下忙 谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035158 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved