`
deepfuture
  • 浏览: 4400677 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80078
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70057
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103363
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285833
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15014
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67577
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32155
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45993
社区版块
存档分类
最新评论

算法下午茶系列-重温汇编(3)[调用C库函数]

 
阅读更多

首先我们先用汇编编写一个helloworld,注意我们直接在汇编代码中调用C语言的printf函数将"hello,world\n" 输出在屏幕上。

.section .data
  output:
  .asciz "hello,world\n"  
.section .text
   .global  main
   main:
   push $output
   call printf
   addl $4,%esp
   push $0
   call exit

 

上述代码中,

push $output将参数入栈,以便printf调用,

然后调用printf,printf会在栈中取出它需要的参数
2)我们直接使用GCC编译后运行 

deepfuture@ubu-s:~$ gcc -o  test test.s
deepfuture@ubu-s:~$ ./test
hello,world

 

3)那么调用C库函数所需要的参数入栈的顺序是什么?

再看一个例子

.section .data
  myvalue:
     .byte 67,68,69,70,0
  mygs:
     .asciz "%s\n"
   
.section .text
.globl main
   main:
    movl $myvalue,%ecx
    push %ecx
    push $mygs    
    call printf
    push $0
    call exit

        
    
    
67,68,69,70是C、D、E、F的ASCII码,0是字符串终结符
 这段代码的功能是输出“CEDF”,相当于下面的C代码

 

#include <stdio.h>
int main( void )
{
     char myvalue[]={67,68,69,70,0};
     printf( "%s\n" ,myvalue);
     return 0;
}

 其中,后面的0表示字符串的终结符。

 

第一个参数最后一个入栈,按调用的相反顺序入栈

 

 

如果转载请注明来源,如有错误之处,请及时指出。

 

分享到:
评论

相关推荐

    --------C语言库函数------

    C语言库函数,C语言函数民快速查询之必备

    C语言库函数速查手册 C语言库函数速查手册

    C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言...

    C语言库函数---unix常用系统调用

    C语言库函数---unix常用系统调用........

    C语言库函数 C语言库函数 C语言库函数

    C语言库函数是C编程中的核心组成部分,它们提供了一系列预定义的功能,帮助程序员高效地完成各种任务。C语言库函数可以分为多个类别,包括输入输出、字符串操作、数学计算、内存管理、文件处理等。这些函数是C语言的...

    电子-2标准例程V3.5库函数版本.rar

    《电子-2标准例程V3.5库函数版本》是一个专为STM32系列单片机设计的软件资源包,适用于STM32-F0、F1和F2型号。这个压缩包包含了开发者进行嵌入式系统开发所需的重要库函数和示例代码,旨在帮助程序员快速理解和应用...

    计算机图形学-java版再次封装相关库函数和实现部分图像算法+源代码+文档说明

    计算机图形学-java版再次封装相关库函数和实现部分图像算法+源代码+文档说明 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审...

    H2INC,在汇编语言中调用C库函数的小工具

    在IT领域,编程语言间的交互是常见的需求,尤其是在低级编程如汇编语言中调用高级语言如C的库函数时。"H2INC"工具就是为此目的设计的,它使得汇编程序员能够轻松地利用C语言丰富的库资源。本文将深入探讨H2INC的工作...

    STM32F10x-时钟树与对应固件库函数

    STM32F10x-时钟树与对应固件库函数,Vision2010文件,

    LibTools-Viewer1.0 windows lib dll库函数查看器

    在软件开发过程中,尤其是涉及到系统级编程或者需要调用特定库函数时,理解库函数的使用至关重要。LibTools-Viewer1.0是一款专为Windows平台设计的库函数查看器,它能帮助开发者快速、直观地查看DLL动态链接库中的...

    C语言库函数查询软件

    C语言库函数是C标准库(如ANSI C或C11)中预定义的一系列函数,它们提供了一系列的操作,涵盖了输入输出、字符串处理、数学运算、内存管理等多个方面。例如,`printf`用于格式化输出,`scanf`用于从标准输入读取数据...

    C语言库函数查询工具

    C语言库函数是C编程中的基础元素,它们提供了一系列预定义的功能,帮助程序员实现各种复杂的操作。本资源是一个专门用于查询C语言库函数的工具,它使得开发者在编写代码时能够快速查找并理解库函数的用途和用法,极...

    C语言库函数功能查询器

    在C语言中,库函数是程序员常用的重要工具,它们提供了一系列预先编译好的功能,可以帮助开发者完成各种任务,如输入输出、字符串操作、数学计算等。本文将深入探讨C语言库函数的功能查询,帮助你更高效地理解和运用...

    C语言库函数 C语言库函数

    C语言库函数是C编程中的核心组成部分,它们提供了一系列预定义的函数,使得开发者能够方便地执行各种操作,如输入输出、字符串处理、数学运算、内存管理等。库函数是C语言强大且高效的特性之一,因为它们经过优化,...

    C语言库函数及其示例

    C语言库函数是C编程的重要组成部分,它们提供了一系列预先定义好的功能,可以帮助程序员高效地完成各种任务。对于初学者来说,理解和掌握C语言库函数是深入学习C编程的基础。本资料包聚焦于C语言库函数及其应用实例...

    09. 剑齿虎开发板-(STVD+IAR)库函数代码.zip

    09. 剑齿虎开发板-(STVD+IAR)库函数代码.zip

    c语言库函数大全-------------------------------

    c语言库函数大全.rar---------------------------------------------------------------------------------------------------------------------

    C语言库函数源码----

    C语言库函数源码是学习和理解C语言底层机制的重要资源。C语言库,特别是GNU C Library(glibc),是C编程的基础,提供了大量的标准函数,涵盖了输入/输出、内存管理、字符串处理、数学运算等诸多方面。glibc-2.24是...

    c语言库函数源代码

    C语言库函数是C编程的基础,它们为程序员提供了大量的基本操作,如输入/输出、内存管理、字符串处理、数学运算等。学习库函数源代码,可以让我们了解这些功能背后的实现机制,提升我们的编程技巧和问题解决能力。 1...

Global site tag (gtag.js) - Google Analytics