汇编文件调用c中的全局变量
来源:互联网 发布:淘宝首页1920全屏装修 编辑:程序博客网 时间:2024/06/10 05:26
看内核的时候遇到一个问题,一个.S文件跟一个.c文件都有一个同名的变量,都是全局的,那么编译之后.S文件先执行,当时我以为是.S中的变量与.c中的变量是同一个变量,其实是错误的,代码验证
A=10.section .dataoutput:.asciz "this is [%d]\n".secion .text.globl mainmain: call hello pushl $A pushl $output call printf movl $1, %eax movl $0, %ebx int $0x80
此为 1.S文件
#include <stdio.h>int A=5;void hello(){ printf("hello world A=[%d]\n", A);}
此为 2.c文件
编译命令: gcc -o test 1.S 2.c
./test
结果: A=5, A=10 //两个不同结果,说明彼此的A是不同的,那么如何才能引用c中的A呢?
代码如下: 1.S 改一下
.extern int A;.section .dataoutput:.asciz "this is [%d]\n".secion .text.globl mainmain: call hello pushl A //注意传过来的是A的地址 pushl $output call printf movl $1, %eax movl $0, %ebx int $0x80
要注意的是 如果在 .extern int A; 的下一行 这样 A= 10 ,那么pushl A这里的A总认为是 A=10中的A,并非extern int A 中的A
0 0
- 汇编文件调用c中的全局变量
- dsp优化-线性汇编中调用全局变量
- 汇编文件(*.S)如何调用C++文件中的函数
- C语言:全局变量在多个文件中的使用方法
- 汇编中的调用约定
- C语言调用汇编
- C调用汇编函数
- 汇编调用C库函数
- C调用汇编
- C调用汇编
- C调用汇编
- C/C++:调用函数来初始化全局变量
- nginx.c中的全局变量分析
- C语言调用汇编和汇编调用C语言
- 汇编中的函数调用:call
- C#中调用Resources文件中的图片
- lua 在C文件中的调用方式
- c语言中的头文件互相调用
- 深入理解JVM内部结构
- Java中常用的加密方法(JDK)
- Android在线源码
- iOS7表格分割线长度问题
- SNMP V3错误笔记整理vi /usr/local/certifier/conf/engine.conf
- 汇编文件调用c中的全局变量
- 类似于yahoo邮箱登陆的提示效果
- jquery学习2 treegrid 更新写法,获取form键值对
- textarea限制输入字数
- 分页SQL取下一页
- 使用JDBC时Class.forName()的作用
- 1030 Travel Plan (30)
- FreeRTOS时钟配置——Cortex-M3
- win2003 服务器安全设置教程