|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
汇编存在的意义? |
作者:祈祷之龙 栏目:ARM技术 |
我前几天刚买了块2104板子,模仿书上P110的例子写了一小段,用汇编内嵌编译通过,可没出现预期效果,大家帮忙看看问题。 而用C的就没错。 本人是在校生,汇编除了对硬件理解有帮助外,到底有什么意义,完全用C已经足够了,感觉没必要在汇编上浪费太多时间,希望高手指点指点,谢谢! ///////////////////////////汇编/////////////////////////////////////// #include <stdio.h> //字符串比较函数 int my_strcmp(const CHAR * str1,CHAR * str2) { int ch1; int ch2; int s; __asm { loop: #ifndef __thumb //ARM指令 LDRB ch1,[str1],#1 LDRB ch2,[str2],#1 #else //Thumb指令 LDRB ch1,[str1] ADD str1,#1 LDRB ch2,[str2] ADD str2,#1 #endif CMP ch1,ch2 CMPEQ ch1,#0 CMPNE ch2,#0 B loop //循环 CMP ch1,#0 CMPNE ch2,#0 SUB s,ch1,ch2 CMP ch1,#0 SUB s,ch1,#0 RSB s,ch2,#0 } return s; } //主函数 int main(void) { const CHAR * a="123"; CHAR b[5]="1234"; //入口参数设置 __asm { MOV R0,a MOV R1,b BL my_strcmp,{R0,R1} } //输出 if(my_strcmp(a,b)>0) printf("1"); else if(my_strcmp(a,b)<0) printf("-1"); else printf("0"); } ////////////////////////////////////C//////////////////////////////// #include <stdio.h> //字符串比较函数 strcmp(CHAR * str1,CHAR * str2) { int i; i=0; while((*(str1+i)==*(str2+i))&&(*(str1+i))&&(*(str2+i))) i++; if((*(str1+i))&&(*(str2+i))) return *(str1+i)-*(str2+i); else if(*(str1+i)) return *(str1+i); else return (0-*(str2+i)); } //主函数 main() { CHAR a[10]="1234"; CHAR b[10]="1234"; strcmp(a,b); if(strcmp(a,b)>0) printf("%s is larger than %s",a,b); else if(strcmp(a,b)<0) printf("%s is smaller than %s",a,b); else printf("%s is equal to %s",a,b); } |
2楼: | >>参与讨论 |
作者: videohome 于 2004/12/8 22:55:00 发布:
汇编,能干什么?搞笑,一看就不知道是做嵌入式的 Windows操作系统的底层函数是用汇编写的, Linux操作系统底层函数是用汇编写的 ECOS操作系统与硬件有关部分是汇编写的 UCOS操作系统与硬件有关部分是汇编写的 VxWorks... ......是用汇编写的,太多了 你可以不理解汇编,可以不理会硬件工作原理,如果你不写程序的话,就算写程序也写不出好程序 |
3楼: | >>参与讨论 |
作者: 祈祷之龙 于 2004/12/8 23:28:00 发布:
-_-! 楼上的兄弟说话真犀利啊。 可我没说汇编不好啊~~~ 只是认为,一般的项目用C已经完全可以编写了,包括与硬件相关的部分。 而且,C的可读性很高,即使设计者离开了,后来者也可以接手快点...... 汇编只在代码效率上出色,人的作用在于用语言在机器上实现自己的想法 而已。过多的精力放在汇编的寄存器操作上,几乎是把机器的活也给做了, 汇编从某种意义上说,更接近于机器,而非人...... 这对于开发并不利...... 可能某些比较牛的人,开发汇编程序已经比较熟练了,另当别伦。不过这种牛人,中国应该不会很多。甚至,我看到有些“专家”出的书,其实都是外国原版的翻译本,可偏偏不写是翻译本,硬写成是自己的研究成果,汗~~~ 还有,高手能帮我看看上面的汇编出错在哪里?谢谢! |
4楼: | >>参与讨论 |
作者: 深思 于 2004/12/9 8:56:00 发布:
那么,只有会汇编的给你搭好平台,你才能过。 没有人去写底层汇编(C完成不了),那么平台就搭不起来。 而你,换谁都能做。不写底层,换谁都不行。 所以,搭建平台的薪水比你高。没他不行,没你却可以。 |
5楼: | >>参与讨论 |
作者: pubstar 于 2004/12/9 10:51:00 发布:
精辟 |
6楼: | >>参与讨论 |
作者: cetclyb 于 2004/12/9 11:09:00 发布:
哈哈哈哈,做硬件就更高吧!? |
7楼: | >>参与讨论 |
作者: videohome 于 2004/12/9 11:39:00 发布:
我说的就是汇编的义意啊! |
8楼: | >>参与讨论 |
作者: foyyof 于 2004/12/9 13:12:00 发布:
没有汇编,你的中断怎么嵌套啊? |
9楼: | >>参与讨论 |
作者: and 于 2004/12/9 22:45:00 发布:
汇编的意义在于 你做在驾驶位上,手握方向盘,问道:“汽车轮子的意义是什么?”。 虽然用C的时候,可以看不到汇编,但它就是“存在于那里的”。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |