知识大全 一起学习在linux下使用汇编语言(1)
Posted 知
篇首语:夜暗方显万颗星,灯明始见一缕尘。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一起学习在linux下使用汇编语言(1)相关的知识,希望对你有一定的参考价值。
作者 luster 摘要 我开始学习在Linux使用汇编语言了 我以前从来没有在Linux下使用过汇编语言 我今天看到了一份文档 是Linux Assembly HOWTO 我看了看 决定学习学习 下面是我的学习笔记 让我一起学习吧 在Linux下使用汇编语言 by Wang Hui(hwang@ustc edu) / / 我开始学习在Linux使用汇编语言了 我以前从来没有在Linux下使用过汇编语言 我今天看到了一份文档 是Linux Assembly HOWTO 我看了看 决定学习学习 下面是我的学习笔记 让我一起学习吧 你需要汇编语言吗? 汇编语言的优点和缺点 汇编语言可以很直接的表达比较低层次的 · 你可以通过汇编代码访问与机器硬件直接相关的存储器或者I/O口 · 你可以在一些关键的代码区准确的控制某些代码的行文 避免其他方法带来的多线程共同访问或者硬件设备共享引起的死锁 · 你可以通过使用汇编打破通常的编译器编译的结果 例如你可以根据自己的考虑优化一些东西 · 我们可以在代码分片之间建立一些接口 · 我们可以通过一些汇编代码使处理器进入不寻常的编程模式 例如 bit mode to interface startup firmware or legacy code on Intel PCs · 可以优化一些代码 提高运行速度 · 可以为特定的应该编写优化代码 · 可以为某语言的编译器编写代码 汇编语言是一种层次非常低的语言(仅仅高于手动编写二进制机器指令码) 这就意味着 · 开始写起来会很长而且单调 · 很容易出现bug · 程序中的bug非常难查找 · 写出来的代码非常难懂 而且不好维护和修改 · 而且结果是不能到其他体系结构的平台上运行 · 代码只能针对某特特定体系结构的特定型号的处理器优化 例如 在Intel兼容系列的CPU中 每一款CPU都有特殊的设计 变量也不一样 都有特定的优化考虑 CPU的时间已经有很多了 例如:Intel Pentium PPro PII PIII PIV; Cyrix x x M ; AMD K K (K K III) K (Athlon Duron) 而且新的设计还不断地出现 · 编写汇编代码时候 我们会花费很多的时间在一些细节事情上 而不能专注一些小的或者大的算法设计 而算法的优化能更快的提高程序运行的速度 例如 你可以用汇编加快一些数组的访问和管理 但是总体上讲 使用hash表会更大程度上加快访问速度 · 一个算法上的小的改动 可能需要我们全部重新写一段很长的代码 pilers make it a lot easier to use plex data structures and pilers don t get bored halfway through and generate reliably pretty good code Linux 和汇编 你可能已经注意到了 在linux下开发程序 通常不需要使用汇编语言 与DOS不一样 你不需要使用汇编来编写linux的驱动程序(当然 如果你非得用汇编写 也可以) 而且现在的编译器有很多优化器 可以针对不多的CPU优化尼的高级语言写的代码 例如C代码 当然既然我们在讨论这个问题 而且你都在阅读本文了 luster知道你肯定有自己的理由去使用汇编而不是C或者C++了 ) 你可能需要使用汇编 或者你不得不使用汇编 简单的说 使用汇编的理由就是精简代码和libc无关性 还有一个理由就是 希望像一个以前的疯狂的hacker那样 这些 多岁的hacker的习惯就是用汇编写任何代码 然而 假如你要移植linux到某些嵌入式硬件环境下 你需要减少系统的大小 你需要将很多基本的系统精简到很小的空间 其中的一个可行的方法就是 重新用汇编写部分(或者全部?)代码 例如 用汇编写的简单的服务器程序可能少于 bytes 这样呢可以把建立一个webserver(包括一个内核和一个d) 大小只有 KB或者更小 是不是很爽? ) 今天就学习到这里 下面就让我们真正开始吧 待续 cha138/Article/program/Oracle/201311/16544相关参考
作者luster 摘要:好吧我们已经铺垫了很多东西了而且看上去用汇编写程序似乎是一个非常恐怖的事情了不过既然我们感兴趣还是应该开始我们的helloworld程序 我们开始写helloworld
Linux下C语言对PHP扩展 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一搭建php环境
知识大全 Linux下通过C++语言代码来操作MySQL数据库
Linux下通过C++语言代码来操作MySQL数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Linux汇编指南 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要:Thefollowing
Linux中x86的内联汇编 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者BharataB
linuxShell学习笔记第五天 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第五天函数与任
在Linux下增加硬盘 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问我使用的是Linux系统
在Linux下装配Oracle 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于Oracle自
知识大全 LINUX作业系统的特点(优点),为什么要学习这门课
LINUX作业系统的特点(优点),为什么要学习这门课 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 linux Shell学习笔记最后一节,温故与知新
linuxShell学习笔记最后一节,温故与知新 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!