分享
 
 
 

一起学习在linux下使用汇编语言(1)

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

作者:luster

摘要:我开始学习在Linux使用汇编语言了。我以前从来没有在Linux下使用过汇编语言。我今天看到了一份文档,是Linux Assembly HOWTO,我看了看,决定学习学习。下面是我的学习笔记。让我一起学习吧。

在Linux下使用汇编语言

by Wang Hui(hwang@ustc.edu)

2001/9/11

我开始学习在Linux使用汇编语言了。我以前从来没有在Linux下使用过汇编语言。我今天看到了一份文档,是Linux Assembly HOWTO,我看了看,决定学习学习。下面是我的学习笔记。让我一起学习吧。

1. 你需要汇编语言吗?

汇编语言的优点和缺点

汇编语言可以很直接的表达比较低层次的:

? 你可以通过汇编代码访问与机器硬件直接相关的存储器或者I/O口。

? 你可以在一些关键的代码区准确的控制某些代码的行文,避免其他方法带来的多线程共同访问或者硬件设备共享引起的死锁。

? 你可以通过使用汇编打破通常的编译器编译的结果,例如你可以根据自己的考虑优化一些东西。

? 我们可以在代码分片之间建立一些接口。

? 我们可以通过一些汇编代码使处理器进入不寻常的编程模式。例如16 bit mode to interface startup, firmware, or legacy code on Intel PCs.

? 可以优化一些代码,提高运行速度。

? 可以为特定的应该编写优化代码。

? 可以为某语言的编译器编写代码。

汇编语言是一种层次非常低的语言(仅仅高于手动编写二进制机器指令码),这就意味着:

? 开始写起来会很长而且单调

? 很容易出现bug

? 程序中的bug非常难查找

? 写出来的代码非常难懂,而且不好维护和修改

? 而且结果是不能到其他体系结构的平台上运行。

? 代码只能针对某特特定体系结构的特定型号的处理器优化。例如,在Intel兼容系列的CPU中,每一款CPU都有特殊的设计,变量也不一样,都有特定的优化考虑。CPU的时间已经有很多了,例如:Intel 386, 486, Pentium, PPro, PII, PIII, PIV; Cyrix 5x86, 6x86, M2; AMD K5, K6 (K6-2, K6-III), K7 (Athlon, Duron). 而且新的设计还不断地出现。

? 编写汇编代码时候,我们会花费很多的时间在一些细节事情上,而不能专注一些小的或者大的算法设计,而算法的优化能更快的提高程序运行的速度。例如,你可以用汇编加快一些数组的访问和管理,但是总体上讲,使用hash表会更大程度上加快访问速度。

? 一个算法上的小的改动,可能需要我们全部重新写一段很长的代码。

"compilers make it a lot easier to use complex data structures,

and compilers don't get bored halfway through and generate

reliably pretty good code."

2. Linux 和汇编

你可能已经注意到了,在linux下开发程序,通常不需要使用汇编语言。与DOS不一样,你不需要使用汇编来编写linux的驱动程序(当然,如果你非得用汇编写,也可以)。而且现在的编译器有很多优化器,可以针对不多的CPU优化尼的高级语言写的代码,例如C代码。当然既然我们在讨论这个问题,而且你都在阅读本文了,luster知道你肯定有自己的理由去使用汇编而不是C或者C++了。:)

你可能需要使用汇编,或者你不得不使用汇编。简单的说,使用汇编的理由就是精简代码和libc无关性。还有一个理由就是,希望像一个以前的疯狂的hacker那样,这些20多岁的hacker的习惯就是用汇编写任何代码。

然而,假如你要移植linux到某些嵌入式硬件环境下,你需要减少系统的大小,你需要将很多基本的系统精简到很小的空间。其中的一个可行的方法就是,重新用汇编写部分(或者全部?)代码。例如,用汇编写的简单的http服务器程序可能少于600 bytes,这样呢可以把建立一个webserver(包括一个内核和一个httpd),大小只有400KB或者更小。是不是很爽?:)

今天就学习到这里。下面就让我们真正开始吧。

待续'

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有