1.开发工具

在汇编语言中,用到的工具主要用下面几个:

汇编器、连接器、调试器、编译器

由于我在这里的是AT&T汇编语言。所以工具下也都是gnu下的那些。



1.1 汇编器(as)

汇编器有非常多,masm,nasm,gas等,不像高级语言,尽管都叫汇编语言。但不同的汇编器,其语法是存在非常大不同的。Intel汇编的书籍到处可见,但是AT&T的却少之又少。但想看Linux内核的话,还是要对AT&T汇编熟悉才行。这或许是自己为什么学习汇编的原因吧。说到汇编器,我们用的是as,其可选參数有非常多。但我们用的几个:

比方我们要汇编test.s为ia-32平台的test.o,

$ as  --32  -o test.o test.s

这里仅仅用到了两个參数--32和-o

--32:是指定为ia-32平台代码,

-o :后接目标文件



 1.2 连接器(ld)

我们选择ld.用到的參数主要有下面几个:

-m elf_i386 :将目标代码连接成elf_i386格式(即32位平台下的代码)

-o :后接目标文件

 

1.3调试器(gdb)

基本的命令有:

list :列出指定的函数或行

break :设置断点

run     :执行

next    :下一条指令

step     : 运行程序中的下一条指令



1.4编译器(gcc)

纯汇编能够不用gcc。

gcc 的參数用到的也不多。有下面几个:

-g:调试模式的代码

-o:后接目标代码

-m32:生成ia32平台代码



1.5 其它一些工具

1.5.1 objdump

Objdump是一个很实用的工具 。其能够实现反汇编

主要用到的參数有:-d 表示将目标代码反汇编成指令码

1.5.2 gprof

gprof打印出程序执行中各个函数消耗的时间,能够帮助程序猿找出众多函数中耗时最多的函数。

1.5.3 操作系统 linux

我的測试环境是ubuntu 14.04  (x86_64 ),但自己学的仅仅是ia-32位汇编,所以,使用--32、-m32、-m elf_i386 生成32位代码

2 .汇编语言的模板范例

事实上,单纯用汇编来开发的程序已经非常少了。

我学习这个。主要目的有两个:

1.看懂Linux内核中的代码

2.看懂C/C++等程序生成的汇编代码

所以。我更希望所用的汇编格式能直接与C语言链接起来。

2.1 汇编程序组成 

汇编语言由定义好的段组成,每一个段都有不同的目的。

三个经常使用的段例如以下:

数据段(.section .data)

声明带有初始值的数据元素,用作汇编 语言程序中的变量

bss段 (.section .bss请问中文该怎样翻译?)

用途汇编语言的缓冲区

文本段 (.section .text)

存放代码

2.1.1 定义段的方法

GNU汇编器使用.section命令语句声明段。.section语句使用一个參数——它声明的段的类型。如下图所看到的。

这将是我们以后要使用的布局 。

2.1.2 定义段的起点

当汇编语言程序被转换成可运行文件时,连接器要知道指向的起点,gnu汇编器声明一个默认标签_start,表明程序从这条指令開始。当然。也能够使用连接器參数-e来定义新的起始名称。

好,以下来总结一下我们的汇编语言的基础模板:

.section .data

    <有初始值的数据放在这>

 .section .bss

    <未初始化的值放在这>

.section .text

.globl _start

_start:

<执行代码放在这>

今天就写到这吧,明天用详细实例来说一下今天所说的工具的使用方法。

AT&amp;T汇编语言——工具及程序组成的更多相关文章

  1. TMS320C54x系列DSP指令和编程指南——第1章 汇编语言工具概述

    第1章 汇编语言工具概述 TMS320C54x DSP的汇编语言开发工具包括: ■  Assembler      ■  Archiver      ■  Linker      ■  Absolut ...

  2. Java开发工具与程序调试

    开发工具:MyEclipse,Eclipse等. 程序调试:  (1)断点:设置断点是程序调试中必不可少的手段,Java调试器每次遇到程序断点时都会将当前线程挂起,即暂停当前程序的运行.(在Eclip ...

  3. Vs2015 c# 诊断工具查看程序的占用情况

    windbg用着还不熟悉,dottrace  还要版权,着急查看程序的cpu 的使用情况,因为程序开启之后占用处理器资源较大,问题在哪里呢,于是点开了vs2015自带的诊断工具,以前偶尔打开过,没发现 ...

  4. 利用Qt自带工具发布程序

    Qt官方开发环境生成的exe发布方式--使用windeployqt 从开始菜单-->Qt 5.4.0-->5.4-->MinGW 4.9 (32-bit)-->Qt 5.4 f ...

  5. 汇编语言第二版 程序在dos中执行情况.P86-87

    假设程序要被dos系统加载到sa:0000的内存中,在这个地址的内存开始会有256个字节的PSP程序,用于加载程序和dos系统的通信.ds中的地址为sa. 真正的程序会在这256个字节之后.所以真正程 ...

  6. IE的debug工具对程序进行debug跟踪JS代码

    2015/8/31 (其他的:显示zjfy_app_sys_ip.html,只需关闭启用保护模式) 显示ie的debug,F12-->Ctrl + P 扩展:第一步,在程序中设置断点,如图所示左 ...

  7. Java队列工具类(程序仅供练习)

    public class QueueUtils<T> { public int defaultSize; public Object[] data; public int front = ...

  8. 使用WinDbg下的gflags工具导致程序无法执行

    问题:the system cannot find file **.exe. 解决方法:开始-运行-输入regedit打开注册表编辑器,找到 HKEY_LOCAL_MACHINE/SOFTWARE/M ...

  9. 利用vs自带工具分析程序性能

    测试程序写好后可以通过VS2010分析菜单里选择启用性能向导 选择CPU采样后就选择需要分析的项目 测试项目选择完成后就可以运行分析,结束分析后VS2010会提供个详细报告文档 从分析结果来看GetC ...

随机推荐

  1. hadoop 集群部署ganglia 监控服务与nagios 报警服务

      1. 部署ganglia 服务   ganglia 涉及到的组件:     数据监测节点(gmond):这个部件装在需要监测的节点上,用于收集本节点的运行情况,并将这些统计信息传送到gmetad, ...

  2. 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底

    本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...

  3. 从“程序员转行卖烧饼”想到IT人创业

    我的一个朋友最近总在跟我念叨着“我不想做开发了,整天累死累活写程序,也攒不下几个钱.我想辞职搞点啥!” 我问他:“你想搞点啥?”. 他说:“搞啥都比做开发强,做个网站赚广告费,接私活……实在不行我去卖 ...

  4. 入门级:怎么使用C#进行套接字编程(二)

    入门级:怎么使用C#进行套接字编程(一) 原文地址如下: C# Server Socket program C# Client Socket program 代码环境:VS2010+Win8.1企业评 ...

  5. WPF ToolKit Chart 自定义样式

    1.引用:WPFToolkit.dll, System.Windows.Controls.DataVisualization.Toolkit.dll 2. 页面代码参考如下: <UserCont ...

  6. C#函数式编程之标准高阶函数

    何为高阶函数 大家可能对这个名词并不熟悉,但是这个名词所表达的事物却是我们经常使用到的.只要我们的函数的参数能够接收函数,或者函数能够返回函数,当然动态生成的也包括在内.那么我们就将这类函数叫做高阶函 ...

  7. Swift 笔记

    苹果官方文档 https://developer.apple.com CocoaChina帮助文档 http://www.cocoachina.com/special/swift/ 74个Swift标 ...

  8. SRS文档 软件需求说明书

    [摘要] 随着信息时代科技的飞速发展,经济全球化已广为人知,英语作为全球最主要的语言之一,受到越来越多的人的喜爱,不仅为了增长知识,也为了能适应社会发展的需求.但是,学英语最重要的事首先是积累词汇,没 ...

  9. 实验五 含有控制信号的计数器VHDL设计

    一.实验目的 学习计数器的设计.仿真和硬件测试,进一步熟悉VHDL设计技术. 二.实验仪器与器材 计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套. 三.实验 1. 基本命题 在 ...

  10. jQuery的XX如何实现?——4.类型检查

    往期回顾: jQuery的XX如何实现?——1.框架 jQuery的XX如何实现?——2.show与链式调用 jQuery的XX如何实现?——3.data与cache机制 -------------- ...