linux中的汇编语言开发一般采用的是AT&T语法,而一些老版本的as对于intel的语法支持还不是很好,保险起见还是用AT&T语法才是王道啊 呵呵

# filename:hello.s

# development environment: Linux as ld gdb IA-32

.section .data

output:

.asciz "hello world\n"

.section .text

.globl _start

_start:

pushl $output #将标签引用的内存地址压入栈中

call printf #调用C语言的printf函数

pushl $123 #将立即数压入栈中以测试返回值

call exit

先汇编一下吧:

as -gstabs -o hello.o hello.s

接下来的连接是关键:

ld -dynamic-linker /lib/ld-linux.so.2 -lc -o hello hello.o

最后看一下返回值:

echo $?

如果正常,结果应为:123

注:

-gstabs参数是包含每行代码的调试信息

-dynamic-linker /lib/ld-linux.so.2如果没有这个参数,当你运行时会出现无法找到文件或者目录的错误信息,问题在于连接器ld可以解析C函数但是函数本身没有包含在最终可执行的程序中,因此还必须在执行时加载“动态库”的程序,在Linux系统中这个程序一般为linux.so.2这个程序通常在/lib目录下

linux中把C语言连接到汇编语言程序有两种方法:

N0.1静态链接(static linking)静态链接把函数目标代码直接连接到可执行文件中,这样会制造巨大的可执行程序,而且同时运行多个实例,就会造成系统资源的浪费(每个实例都会有自己相同函数的拷贝)

NO.2动态链接库(dynamic linking)程序运行时自动调用动态库,并且多个程序间可以共享库

Linux汇编代码中加打印,汇编语言中调用C函数打印“hello world”相关推荐

  1. matlab10的阶层怎么输入,在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表...

    点击查看在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表具体信息 答:Matlab 2015R 及以后版本,都自带阶乘函数,代码为: >> facto ...

  2. dec在微型计算机中的意思,汇编语言中的DEC是什么意思?

    汇编语言中的DEC是什么意思?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DEC( DECrement ) 减1指令 ...

  3. ME2N标准报表中加EKKO/EKPO中没显示的字段

    用户提出要在ME2N/ME2M/ME2W/ME3M里加EKKO/EKPO中没显示的字段: 1.现是在结构MEREP_OUTTAB_PURCHDOC里APPEND字段就可以了. SE11中显示结构:ME ...

  4. html中加session,Html中如何获取session中的值(如登录后显示XX欢迎您!)

    话不多说,直接切入正题. 相信大家经常在各大网站上,登录过自己的帐号吧,那么就一定应该见过在点击登录之后,会发现在top的顶部状态栏中或是页面中央显示着 "xx欢迎您!"之类的语句 ...

  5. html中加水印,html中实现添加水印的功能

    最近项目需求中需要在html中添加水印效果,试验了一下几种方法 1.使用背景图添加水印 2.使用定位添加水印 3.使用js添加可配置控制水印 CSS: body{background-color: # ...

  6. 在代码中加载storyBoard中的ViewController

    首先, 要在storyBoard中画出想要的VC, 然后建一个VC类和他关联.如图 : 调用时找如下写: DetailViewController *detailVC = [[UIStoryboard ...

  7. table表格代码 内线加粗_HTML中表格table边框border(1px还嫌粗)的解决方案:

    第一种方法: 1.将table的属性设置为:BORDER=0 .cellspacing=1 : 2.设置table的背景色为即你要设置的table的边框颜色: 3.设置所有td背景色为#ffffff白 ...

  8. iOS中加载Flutter中的图片

    在 Flutter 插件开发中,有时需要将 Flutter 中配置的图片资源传递到 Android 或者是 iOS原生中,传递方法如下: //一般应用在Flutter 插件开发中 //注册插件的方法 ...

  9. linux 汇编 读取软盘,学习x86汇编语言7 使用INT13读取软盘数据

    学习x86汇编语言7 使用INT13读取软盘数据 一.本章使用工具 二.软盘存储介绍 三.BIOS int13功能 四.引导程序源代码 一.本章使用工具 nasm FloppyWriter bochs ...

最新文章

  1. U3D Debug.log的问题
  2. linux 进程死循环,Linux下如何处理一次用户态进程死循环问题
  3. 你穿衣品味还不如AI,这有一款时尚着装网络模型
  4. c语言变量生存期,C语言变量的生命周期
  5. 微信小程序开发学习笔记002--微信小程序框架解密
  6. 【java笔记】线程间通信(1):等待唤醒机制
  7. 【DP + 卖股票】LeetCode 188. Best Time to Buy and Sell Stock IV
  8. Oracle 数据库连接工具
  9. 计算机图形学实验一直线-DDA算法
  10. 小米平板2刷哪个系统更流畅_教程:小米平板2轻松刷Win10
  11. Android+8.0+微信表情,微信8.0表情为什么不动?微信8.0哪些表情有动画效果?
  12. SAP 金额等负号提前问题
  13. iOS 支付宝授权登录,思路
  14. 基于视觉显著性的外观注视估计
  15. MATLAB实战——方差分析
  16. 大数据标准化白皮书(2020版) 附下载地址
  17. html css齿轮滚动特效,纯CSS3实现的齿轮滚动动画
  18. IIS 6.0 支持Php
  19. JS中删除数组中的元素
  20. 磁盘检测命令:chkdsk 修复U盘、SFC命令

热门文章

  1. Qt、X11、Qt/Embedded、Qt-X11
  2. 获取随机数字且不重复
  3. 拍案叫绝的情报分析之图片挖掘
  4. arm64 blr指令
  5. Android开发入门 - 简易开心消消乐界面设计
  6. 阿里巴巴字体图标的使用
  7. python百度地图标注,Python+百度地图实现地址多点标注--用上BMap了
  8. chmod 和 chown 命令用法
  9. Window10 打开ftp服务
  10. ucache灾备云报价_UCache云灾备体系介绍