能力值:
(RANK:650 )
|
-
-
2 楼
假设a b 不等
a = a^b
b = b^a
a = a^b
|
能力值:
( LV9,RANK:170 )
|
-
-
3 楼
delphi
asm
mov eax, A
mov edx,B
xchg eax,edx
mov A,Eax
mov B,Edx
end;
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
谢谢楼上两位兄弟。昨天想了一天。。。
|
能力值:
( LV9,RANK:170 )
|
-
-
5 楼
与上面重复,没有楼下的兄弟的经典!
|
能力值:
( LV9,RANK:250 )
|
-
-
6 楼
push a
push b
pop a
pop b
|
能力值:
( LV9,RANK:250 )
|
-
-
7 楼
既然这样了,为什么不如此操作?
asm
mov eax,A
mov edx,B
mov A,edx
mov B,eax
end;
如果是A,B是独立数的话,也可以:
A=A+B
B=A-B
A=A-B
|
能力值:
( LV9,RANK:1250 )
|
-
-
8 楼
[QUOTE=peaceclub;312371]既然这样了,为什么不如此操作?
asm
mov eax,A
mov edx,B
mov A,edx
mov B,eax
end;
如果是A,B是独立数的话,也可以:
A=A+B
B=A-B
A=A-B[/QUOTE]
push和pop指令好像比mov快。因为intel对他们做过优化。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
学习啊 ;
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
不会吧
push和pop还有一个改变sp/esp的动作
其实对于现在的cpu区别应该不大了,
流水线,多级缓存。。。
|
能力值:
(RANK:170 )
|
-
-
11 楼
[QUOTE=peaceclub;312371]既然这样了,为什么不如此操作?
asm
mov eax,A
mov edx,B
mov A,edx
mov B,eax
end;
如果是A,B是独立数的话,也可以:
A=A+B
B=A-B
A=A-B[/QUOTE]
楼主的意思应该是这个,
A=A+B
B=A-B
A=A-B
--------
你们这样把人家都弄糊涂了,呵呵呵呵
|
能力值:
( LV9,RANK:250 )
|
-
-
12 楼
异或 可能是最好的,那个push pop 还是用到了其他存储部分。
还有一个是
a += b;
b = a - b;
a = a - b;
只是这个可能存在溢出的可能性。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
a = a + b;
b = a - b;
a = a - b;
|
能力值:
( LV10,RANK:170 )
|
-
-
14 楼
没想到有这么多方法,我只知道 push a push b pop a pop b啊,又学了不少东西啊
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
这个不是对栈吗?
咋不是先进后出啊?
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
这个问题够经典!收益良多,多谢各位~
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
两个变量? bool,int,float....
A := B;
B := not A;
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
以前学GW Basic就遇到这个问题了
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
还有XCHG指令可以用
|
能力值:
( LV4,RANK:50 )
|
-
-
20 楼
学了不少东西。没想到这么多强人。收获甚多。
|
能力值:
( LV8,RANK:130 )
|
-
-
21 楼
强人不少 ;学习了不少!
这不是要交换a,b 吗?
|
能力值:
( LV9,RANK:850 )
|
-
-
22 楼
支持沙发shoooo的异或
|
能力值:
( LV6,RANK:90 )
|
-
-
23 楼
也支持xor,高
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
异或的方法,似乎在某个masm的例子文件里见过,记不清楚了
|
能力值:
( LV9,RANK:210 )
|
-
-
25 楼
push和pop慢,我用rdtsc测试过
|
|
|