
AT&T汇编
文章平均质量分 79
Main_m
互联网小兵一枚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
汇编总结-第二部分_1_数据传送
这一篇主要说明数据传送的问题。 首先,在AT&T汇编中的数据也是分类的。我记得学win16汇编的时候没有这个概念,只知道可以按寄存器的高低位来传送数据。下面是win32汇编的几种命令: .ascii 文本字符串(不带’\0’) .asciz 以空格符结尾的文本字符串 .byte 字节值原创 2014-01-10 14:06:23 · 1008 阅读 · 0 评论 -
汇编总结-第三部分_2_GNU下优化代码
通常汇编写的代码具有非常好的速度。但是难懂,所以人们就选择先编译高级语言,然后再修改汇编代码来达到优化目的。但实际上想要写的比编译器好是需要很多的练习的。对于我们这些普通的汇编使用者,就了解点简单的技巧和编译器如何优化的知识就够了。 GNU的编译器一般提供了3个级别的优化。注意优化之前先保存一遍原来的代码。 因为编译器貌似会直接把你的代码改了。。 编译器提供的-o –o2-o3到原创 2014-01-10 14:19:27 · 1220 阅读 · 0 评论 -
汇编总结-第三部分_1_内联汇编
想要用汇编实现的代码有哪几种方式? 1. 直接从头开始用汇编写。 2. 先写好C程序,然后通过-S选项来修改。 3. 直接在C中代码嵌入汇编的代码,也就是所谓的内联汇编 如何实现内联汇编代码? asm(“”); 你在” ”之间所写的内容就是你加入的汇编代码。 要求如下: 1. 指令必须包含在引号里面 2. 如果包含的指令超原创 2014-01-10 14:17:44 · 975 阅读 · 0 评论 -
汇编总结-第一部分_2_linux下汇编的相关工具
一个汇编程序员至少应该有下面这些工具: 1.汇编器 2.连接器 3.调试器 汇编器自然不用说,就是将汇编代码转换成目标代码的程序.注意是目标代码,windows平台上的可能会理解成最终的二进制代码,原因其实就是你们所用的IDE真的是给你们做了太多隐藏的工作.. 连接器就是将目标代码连接起来的工具.从而组成可执行文件. 汇编语言程序主要由3部分组成, 1.操作码助记符 2.数据原创 2014-01-10 14:03:56 · 1080 阅读 · 0 评论 -
汇编总结-第二部分_3_使用函数
汇编函数是如何声明的? 很简单用.type命令来创建函数的标签,如下: .type fun1, @function fun1: 保存寄存器等值。 函数体 ret Ps:函数一开始可以使用finit命令来清空FPU寄存器。 还有pusha和popa很方便的让你全部的寄存器值一次性都保存在堆栈中和取出 那么如何访问汇编函数呢? 直接call+函数标签 就OK了。原创 2014-01-10 14:15:44 · 1013 阅读 · 0 评论 -
汇编总结-第一部分_1_AT&T汇编的基本介绍
刚看完汇编,由于是借学校的书,所以就把关键知识点写在博客上了. 参考的是richard blum的,看豆瓣上面分数蛮高的. 主要平台是linux下的AT&T汇编.. 我学汇编主要是想可以看懂汇编代码的意思.其实所谓优化也不过是调调代码顺序,用点比较特殊的指令,如果不是很有经验的话,可能人来优化的还不如编译器.. 我就把汇编当作以后学新语言了解编译器在干什么的一个工具就可以了.原创 2014-01-10 14:02:00 · 1257 阅读 · 0 评论 -
汇编总结-第一部分_3_汇编的程序组成
下面进入汇编程序怎么编程的介绍。 之前我就说过汇编的段一般分为3种 ·数据段 .data ·bss段 .bss ·文本段 .text 注意这里的段都可以多次出现.C语言中的全局变量和静态变量都是存储于这个bss段。所以你应该猜到了吧?对于bss段而言,全部内容都会用0来初始化。并且注意bss段并不包含在可执行文件中。但是正如之前所强调的.BSS存放的是未初原创 2014-01-10 14:05:12 · 915 阅读 · 0 评论 -
汇编总结-第二部分_2_数据处理
关于流程控制的太过简单,所以就在这里简单介绍一下。 汇编之中想要转变位置只能使用类似C语言中goto的模式,也就是跳转指令 跳转指令分为下面3类。 ·短跳转 偏移量128字节之内的跳转。 ·近跳转 所有其余跳转 ·远跳转 按段来跳转 实际上偏移量128字节就说明了其控制偏移大小的是一个8位二进制所表示的范围。 C语言中的switch最多也只支持256个跳转,我估计可能和这原创 2014-01-10 14:07:18 · 1051 阅读 · 0 评论