IMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的
EXPORT ,表示本程序里面用到的变量提供给其他模块调用的。
以上两个在汇编和C语言混合编程的时候用到
刚看到一篇不错的BLOG,解说C和汇编混编的,虽然貌似是翻译ADS文档的,不过写的挺不错,通俗容易懂,可以看看
其实汇编调用C貌似很简单
B Main 就完了,直接跳过去,那传递参数怎么办?根据《嵌入式系统 Boot Loader 技术内幕》里面说的用弹簧床什么的来结局,不过暂时理解不了。
用ADS的一个项目中同时放汇编的S文件和C语言文件的话,那么整个连接出来,程序默认从C语言的main函数那里作为入口,刚才试了一下,发现解决办法。方法是,先将汇编的入口标签EXPORT出来,
      AREA adrlabel, CODE, READONL
      IMPORT Main
      EXPORT Start     
      ENTRY                      
Start
      MOV R0,#10   ; 没有用,纯粹为了方便看
      B  Main
      B  .
      END
 这样声明了一个Start的标签提供给外面引用,然后IMPORT声明需要引用一个C语言的Main函数,好了,在修改一下连接属性,Image Entry Point 那里填  “Start” 将镜像的开始点指向Start,那么运行的时候,就先执行Start那里的汇编程序,而不是先执行C里面的Main函数了 :)

ADR 装载地址,不过地址范围不能大,4KB 空间
编译器会根据需要汇编成 ADD SUB 指令的。
如果装载的地址比较大,则需要用 ADRL 指令。
好了,貌似今天终于搞懂那个文字池(literal pool)是什么东西了。
根据现在的理解,大概是这样的:
首先,因为ARM一条指令只有32位,所以只能通过mov指令装载一个单字节,8位的理解数,最大是 255 。遇到需要装载32位立即数的时候,编译器采取了一个叫文字池的办法,将立即数放在那里,然后通过PC指针的偏移来取立即数。这个文字池是编译器自己取搞的,一般放在代码的后面,条件是代码长度不能超过4KB,否则编译出错,这个时候可以用一条LTORG 指令强制将文字池定位在4K范围内,那就OK了~~~
不过咱们的目标是写bootloader,估计应该不用很担心这个问题,放心的用就是了。
其实ADS目录下面有个例子就是说明这个问题的,下面的小例子摘取自ADS目录下面的
Examples\asm\adrlabel.s
FUNC2
      LDR  R2,=0X55555555      
      MOV  PC,LR
     ; LTORG
DAT
      SPACE 4200   
      END
因为DAT空出了 4200 字节的空间,已经大于4K了,如果不加 LTORG 指令的话,那么文字池会分配在4200字节空间之后,超过4K,所以那个 LDR  R2,=0X55555555 指令会出错的,然而我们如果用 LTORG 指令将文字池强制分配在那4200字节空间之前,那就解决问题了。自己试试就是了,很简单的~~~

汇编里的IMPORT和EXPORT的更多相关文章

  1. (MySQL里的数据)通过Sqoop Import Hive 里 和 通过Sqoop Export Hive 里的数据到(MySQL)

    Sqoop 可以与Hive系统结合,实现数据的导入和导出,用户需要在 sqoop-env.sh 中添加HIVE_HOME的环境变量. 具体,见我的如下博客: hadoop2.6.0(单节点)下Sqoo ...

  2. (MySQL里的数据)通过Sqoop Import HBase 里 和 通过Sqoop Export HBase 里的数据到(MySQL)

    Sqoop 可以与HBase系统结合,实现数据的导入和导出,用户需要在 sqoop-env.sh 中添加HBASE_HOME的环境变量. 具体,见我的如下博客: hadoop2.6.0(单节点)下Sq ...

  3. import 和 export

    1.export 命令 export 命令用于规定模块的对外接口. 一个模块就是一个独立的文件.该文件内部所有的变量,外部无法获取.要想外部能够读取模块内部的某个变量,就必须使用 export 关键字 ...

  4. 转:彻底搞清楚javascript中的require、import和export

    原文地址:彻底搞清楚javascript中的require.import和export   为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Ja ...

  5. export,import ,export default区别

    export,import ,export default区别 一.export,import ,export default ES6模块主要有两个功能:export和import export用于对 ...

  6. export,import ,export default是什么

    首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口i ...

  7. import和export语法报错

    “最近在学习ES6”,但是在chrome中新建了js通过ES6语法(import,export)无法引入外部JS,报错: Uncaught SyntaxError:Unexpected token { ...

  8. [ES6]import 与export的用法 ,export 与export default 的 区别 以及用法

    一.import 与export export(导出):用于对外输出本模块(一个文件可以理解为一个模块)变量的接口: import(导入):用于在一个模块中加载另一个含有export接口的模块. 1. ...

  9. export,import ,export default的区别

    首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口i ...

随机推荐

  1. 如何用java有选择的输入多行文本

    java如何有选择的输入多行文本 今天在做作业的时候碰到了一个问题:要用java做词频统计,但是这就犯难了,java如何有选择性的进行文件输入输出呢? 查阅文档可知,inputStream类和outp ...

  2. Linq 透明标识符 let

    IEnumerable<Person> list = new List<Person> { , Id = }, , Id = }, , Id = }, , Id = }, , ...

  3. HDU 2874 Connections between cities(LCA+并查集)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2874 [题目大意] 有n个村庄,m条路,不存在环,有q个询问,问两个村庄是否可达, 如果可达则输出 ...

  4. Codeforces 785D Anton and School - 2(组合数)

    [题目链接] http://codeforces.com/problemset/problem/785/D [题目大意] 给出一个只包含左右括号的串,请你找出这个串中的一些子序列, 要求满足" ...

  5. 【spfa】bzoj3921 Mimori与树海

    考虑“删除后图仍连通”,即其不是无向图的桥(bridge),可以用Tarjan算法预处理,这里不赘述. [算法一] 枚举删除的是哪条边,然后枚举起点,暴搜,统计答案. 可以通过0.1号测试点. 预计得 ...

  6. 【动态规划】【最短路】【spfa】bzoj1207 [HNOI2004]打鼹鼠

    <法一>若打了一只鼹鼠后,还能打另一只,我们可以在它们之间连权值为1的边.于是答案就是 以m为终点的最长路长度+1.建反图,就是单源最长路. MLE TLE 一时爽. #include&l ...

  7. [CF321C]Ciel the Commander

    题目大意: 给你一棵n个结点的树,给每个结点分级,最高为'A',最低为'Z'. 尝试构造一种分级方案,使得任意两个相同级别的结点路径上至少有一个更高级的结点. 思路: 贪心+树上点分. 递归处理每一棵 ...

  8. python的编码程序例题

    有一段python的编码程序如下:urllib.quote(line.decode("gbk").encode("utf-16")),请问经过该编码的字符串的解 ...

  9. wait和notify函数的规范代码模板

    // The standard idiom for calling the wait method in Java synchronized (sharedObject) { while (condi ...

  10. MySql优化--使用索引优化

    原文:http://blog.csdn.net/zuoanyinxiang/article/details/50606837 1.索引优化的原理   在没有使用索引的时候,数据库系统会根据要查找的值到 ...