arm-linux-ld的理解

来源:互联网 发布:windows资源管理器黑屏 编辑:程序博客网 时间:2024/05/17 02:39
-T选项是ld命令中比较重要的一个选项,可以用它直接指明代码的代码段、数据段、bbs

  段,对于复杂的连接,可以专门写一个脚本来告诉编译器如何连接。

  -Ttext addr

  -Tdata addr

  -Tbss addr

arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o

  我们看看它是什么意思:-o选项设置输出文件的名字为led_on_c_tmp.o;“--Ttext 0x00000000”设置代码段的起始地址为0x00000000;这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件,此可执行文件的代码段起始地址(即运行地址)为0x00000000。


  arm-linux-ld命令中选项“-Ttext”也可以使用选项“-Tfilexxx”来代替,在文件filexxx中,我们可以写出更复杂的参数来使用arm-linux-ld命令。

ARM汇编中,常有两种跳转方法:b跳转指令、ldr指令向PC赋值。

  我自己经过归纳如下:

  b step1 :b跳转指令是相对跳转,依赖当前PC的值,偏移量是通过该指令本身的bit[23:0]算出来的,这使得使用b指令的程序不依赖于要跳到的代码的位置,只看指令本身。

  ldr pc, =step1 :该指令是从内存中的某个位置(step1)读出数据并赋给PC,同样依赖当前PC的值,但是偏移量是那个位置(step1)的连接地址(运行时的地址),所以可以用它实现从Flash到RAM的程序跳转。

0 0
原创粉丝点击