ARM基础:C程序调用汇编

/******************************************************************************************************************
参考:
说明:这个是存到一个变量中,以后再补充一个返回值保存到指针中的。

******************************************************************************************************************/

  1. //startup.s    
  2.         AREA    asmfile, CODE, READONLY    
  3.         EXPORT  asmSum1    
  4.         IMPORT Main    
  5.         ENTRY    
  6. START    
  7.         b Main    
  8. asmSum1    
  9.         add r0, r0, r1     
  10.     
  11. over    
  12.         mov pc, lr    
  13.             
  14.         END  
  1. //main.c    
  2. #include <stdio.h>    
  3.     
  4. extern int asmSum1(int src, int dest);    
  5.     
  6. int Main()    
  7. {    
  8.     int s = 2;    
  9.     int d = 3;    
  10.     int c = asmSum1(s, d);    
  11.     //see c    
  12.     return 0;    

2.0 题目:设计一个函数,原型为 void asmSum1(int src, int dest, int *psum);在汇编中定义,并且通过psum指针接收结果;

  1. //main.c    
  2. #include <stdio.h>    
  3.     
  4. extern int asmSum1(int src, int dest,int* san);    
  5.     
  6. int Main()    
  7. {    
  8.     int s = 2;    
  9.     int d = 3;    
  10.     int psum[1];    
  11.     int c = (int)psum;    
  12.     asmSum1(s, d, psum);    
  13.     //see c    
  14.     return 0;    
  1. @@startup.s    
  2.         AREA    asmfile, CODE, READONLY    
  3.         EXPORT  asmSum1    
  4.         IMPORT Main    
  5.         ENTRY    
  6. START    
  7.         b Main    
  8. asmSum1    
  9.         add r0, r0, r1     
  10.         str r0, [r2]    
  11.     
  12. over    
  13.         mov pc, lr    
  14.             
  15.         END

时间: 2024-10-21 04:24:06

ARM基础:C程序调用汇编的相关文章

ARM基础知识学习笔记

/*****************数电知识*******************/ PN结(Positive-Negative) 三极管:BJT(双极结型三极管Bipolar Junction Transistor)               FET(场效应管Field Effect Transistor)          (单极结型) 1.MOSFET (金属氧化物半导体Metal Oxide Semiconductor FET)               2.JFET(结型Junct

ARM汇编语言的程序结构

一个ARM汇编语言源程序的基本结构: AREA Init, CODE, READONLY ENTRY Start LDR R0, =0x3FF5000 LDR R1, 0xFF STR R1, [R0] LDR R0, =0x3FF5008 LDR R1, 0x01 STR R1, [R0] ... ... ... ... ... ... END 在 ARM( Thumb)汇编语言程序中,以程序段为单位组织代码. 段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内

linux平台学x86汇编(十九):C语言中调用汇编函数

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 除了内联汇编以外,还有一种途径可以把汇编代码整合到C/C++语言中,C/C++语言可以直接调用汇编函数,把输入值传递给函数,然后从函数获得输出值. 如果希望汇编语言函数和C/C++程序一起工作,就必须显示地遵守C样式的函数格式,也就是说所有输入变量都必须从堆栈读取,并且大多数输入值都返回到EAX嫁寄存器中.在汇编函数代码中,C样式函数对于可以修改哪些寄存器和函数必须保留哪些寄

【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-static-files.html http://www.yuanjiaocheng.net/ASPNET-CORE/setup-mvc.html http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-design-pattern.html http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-routing.html h

C语言调用汇编实现字符串对换

1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib.h> extern void strswp(char *str1, char *str2); int main(void) { char str1[10] = "123456789"; char str2[10] = "abcde"; strswp(str1, s

C语言调用汇编

程序的入口是main,在main里调用汇编的函数. 首先要解决怎么定义函数的问题 在C语言中,要extern 一个函数声明即可,然后这个函数在汇编里面实现. 在汇编里面,用EXPORT 把C语言定义的函数名引进来,再开始编写函数名开始的段 例子是一个六个数相加的函数. C语言: #include<stdio.h> extern int sum(int a,int b,int c,int d,int e,int f); int main(){ int result = sum(1,2,3,4,5

利用OllyDebug查看程序调用的dll模块

最近在做一个Qt项目,在产品发布的时候一直为找不到程序到底缺少了哪些dll组件而困扰.具体问题是,在我的项目中使用到了QMediaPlayer播放一段音频文件,我使用的开发环境的Win7 32位,而在发布安装包的时候,还是照常去掉Qt相关的环境变量,然后运行可执行程序,提示缺少什么dll,我就向可执行程序的目录下拷贝对应的dll,直到程序可以正常启动运行.就是按照上面的方法,我制作了软件的安装包,但是,当将这个软件安装到XP系统上测试时,发现程序没有声音了,这个问题让我很纠结. 后来,我在网上找

000编程基础----GCC程序编译

GNU C Compiler 多平台编译器,是GNU的代表作之一. GCC编译器可以编译链接C\C++\汇编成可执行文件,可执行文件没特殊后缀,看属性. 预处理 编译 汇编 链接 Gcc通过后缀来区分不同类型文件 .c C语言源代码文件 .a库文件 由目标文件构成的库文件 .C .cc .cxx C++源代码文件 .h 头文件 .i 已经预处理过的C源代码文件 .ii 已经预处理过的C++源代码文件 .o 编译后的目标文件 .s 汇编语言源代码文件 .S 经过预编译的汇编语言源代码文件 预处理:

C#基础之异步调用实例教程

本文实例形式展示了C#中异步调用的实现方法,并对其原理进行了较为深入的分析,现以教程的方式分享给大家供大家参考之用.具体如下: 首先我们来看一个简单的例子: 小明在烧水,等水烧开以后,将开水灌入热水瓶,然后开始整理家务 小文在烧水,在烧水的过程中整理家务,等水烧开以后,放下手中的家务活,将开水灌入热水瓶,然后继续整理家务 这也是日常生活中很常见的情形,小文的办事效率明显要高于小明.从C#程序执行的角度考虑,小明使用的同步处理方式,而小文则使用的异步处理方式. 同步处理方式下,事务是按顺序一件一件