Linux汇编代码中加打印,汇编语言中调用C函数打印“hello world”
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”相关推荐
- matlab10的阶层怎么输入,在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表...
点击查看在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表具体信息 答:Matlab 2015R 及以后版本,都自带阶乘函数,代码为: >> facto ...
- dec在微型计算机中的意思,汇编语言中的DEC是什么意思?
汇编语言中的DEC是什么意思?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DEC( DECrement ) 减1指令 ...
- ME2N标准报表中加EKKO/EKPO中没显示的字段
用户提出要在ME2N/ME2M/ME2W/ME3M里加EKKO/EKPO中没显示的字段: 1.现是在结构MEREP_OUTTAB_PURCHDOC里APPEND字段就可以了. SE11中显示结构:ME ...
- html中加session,Html中如何获取session中的值(如登录后显示XX欢迎您!)
话不多说,直接切入正题. 相信大家经常在各大网站上,登录过自己的帐号吧,那么就一定应该见过在点击登录之后,会发现在top的顶部状态栏中或是页面中央显示着 "xx欢迎您!"之类的语句 ...
- html中加水印,html中实现添加水印的功能
最近项目需求中需要在html中添加水印效果,试验了一下几种方法 1.使用背景图添加水印 2.使用定位添加水印 3.使用js添加可配置控制水印 CSS: body{background-color: # ...
- 在代码中加载storyBoard中的ViewController
首先, 要在storyBoard中画出想要的VC, 然后建一个VC类和他关联.如图 : 调用时找如下写: DetailViewController *detailVC = [[UIStoryboard ...
- table表格代码 内线加粗_HTML中表格table边框border(1px还嫌粗)的解决方案:
第一种方法: 1.将table的属性设置为:BORDER=0 .cellspacing=1 : 2.设置table的背景色为即你要设置的table的边框颜色: 3.设置所有td背景色为#ffffff白 ...
- iOS中加载Flutter中的图片
在 Flutter 插件开发中,有时需要将 Flutter 中配置的图片资源传递到 Android 或者是 iOS原生中,传递方法如下: //一般应用在Flutter 插件开发中 //注册插件的方法 ...
- linux 汇编 读取软盘,学习x86汇编语言7 使用INT13读取软盘数据
学习x86汇编语言7 使用INT13读取软盘数据 一.本章使用工具 二.软盘存储介绍 三.BIOS int13功能 四.引导程序源代码 一.本章使用工具 nasm FloppyWriter bochs ...
最新文章
- U3D Debug.log的问题
- linux 进程死循环,Linux下如何处理一次用户态进程死循环问题
- 你穿衣品味还不如AI,这有一款时尚着装网络模型
- c语言变量生存期,C语言变量的生命周期
- 微信小程序开发学习笔记002--微信小程序框架解密
- 【java笔记】线程间通信(1):等待唤醒机制
- 【DP + 卖股票】LeetCode 188. Best Time to Buy and Sell Stock IV
- Oracle 数据库连接工具
- 计算机图形学实验一直线-DDA算法
- 小米平板2刷哪个系统更流畅_教程:小米平板2轻松刷Win10
- Android+8.0+微信表情,微信8.0表情为什么不动?微信8.0哪些表情有动画效果?
- SAP 金额等负号提前问题
- iOS 支付宝授权登录,思路
- 基于视觉显著性的外观注视估计
- MATLAB实战——方差分析
- 大数据标准化白皮书(2020版) 附下载地址
- html css齿轮滚动特效,纯CSS3实现的齿轮滚动动画
- IIS 6.0 支持Php
- JS中删除数组中的元素
- 磁盘检测命令:chkdsk 修复U盘、SFC命令