原帖由 davycu 于 2008-2-20 17:26 发表
很抱歉无意中的一句话引起您的不快,解释一下我那句话:进来时第一眼看到楼主的头像(现在已经换了)跟阁下的一样,所以说了那句,“同学”只是我平时的习惯用语,不是说你们是同学
占用楼主地方了,还请见谅哈
原帖由 dxcnjupt 于 2008-2-24 15:47 发表
抠语法的话:
x = x+y:
mov eax, [x]
mov ebx, [y]
add eax,ebx
mov [x], eax
x += y:
mov eax, [y]
add [x], eax
支持cat的观点,c语言不要太在意这种细节的东西。算法和架构才是最重要的
如果 ...
原帖由 soso2008 于 2008-2-25 12:01 发表
不敢苟同,
我想并不是直接操作内存单元,而是用CPU内部的累加器进行计算,然后再写回内存,
这两种写法,在C编译器层面产生的结果就应该是一样的,
指令运算更不会有差异,
int main( void ) { int x, y; y = 5; x = y; return 0; } |
.file "test1.c" gcc2_compiled.: ___gnu_compiled_c: .def ___main; .scl 2; .type 32; .endef .text .align 4 .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %ebp movl %esp,%ebp subl $24,%esp call ___main movl $5,-8(%ebp) movl -8(%ebp),%eax movl %eax,-4(%ebp) xorl %eax,%eax jmp L2 .align 4 L2: movl %ebp,%esp popl %ebp ret |
原帖由 soso2008 于 2008-2-26 10:33 发表
要是抠到指令集的层面上,
不同的体系结构可能有差异,但是我还没有见过直接用SDRAM运算加法的,
比如最简单的,在MCS51单片机中,计算加法时,只能用Acc,
用汇编写加法时,
MOV Acc, X
ADD Acc, Y ...
原帖由 dxcnjupt 于 2008-2-25 20:28 发表
1有什么理由不允许直接操作内存单元吗??我想不到。
2在不抠语法的情况下,我举双手同意“这两种写法,在C编译器层面产生的结果就应该是一样的,指令运算更不会有差异”,但是我认为都应该优化成直 ...
原帖由 dxcnjupt 于 2008-2-24 15:47 发表
抠语法的话:
x = x+y:
mov eax, [x]
mov ebx, [y]
add eax,ebx
mov [x], eax
x += y:
mov eax, [y]
add [x], eax
支持cat的观点,c语言不要太在意这种细节的东西。算法和架构才是最重要的
如果 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |