`

.globl _start

阅读更多
.globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号(在第 5.1 节 “目标文件”详细解释)。_start就像C程序的main函数一样特殊,是整个程序的入口,链接器在链接时会查找目标文件中的_start符号代表的地址,把它设置为整个程序的入口地址,所以每个汇编程序都要提供一个_start符号并且用.globl声明。如果一个符号没有用.globl声明,就表示这个符号不会被链接器用到。
分享到:
评论

相关推荐

    uboot,start.S汇编文件分析

    `start.S`文件中,`.globl_start`是一个重要的预处理指令,用于声明`_start`标号为全局可见。这意味着在链接阶段,链接器会识别`_start`为整个程序的入口点,从而正确地构建可执行映像。`_start`标号的作用不可小觑...

    u-boot的详细代码解析

    .globl _start // 定义_u-boot的启动入口 _start: b reset // 跳转到reset处理程序 ; 中断向量表 ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ...

    U-BOOT-2010.3的移植

    - 编辑 `cpu/arm1176/start.s` 文件。 - 修改 `.globl _start` 后的代码,确保 MMU 的正确配置和其他初始化工作。 - 示例代码如下: ``` .globl _start _start: b reset #ifndef CONFIG_NAND_SPL ldr pc, _...

    U-Boot源代码分析.pdf

    这一阶段的代码位于`cpu\<cputype>\start.s`文件中。具体步骤如下: - **CPU自身初始化**:包括MMU、Cache、时钟系统、SDRAM控制器等的初始化,确保CPU可以在正确的环境下执行后续任务。 - **重定位**:将U-Boot从...

    ARM标准汇编与GNU汇编.doc

    例如,`.globl _start`使得 `_start` 标签成为全局可见的。 数据传递在汇编语言中非常重要。在数据段中,我们可以使用`.ascii`和`.asciz`声明文本字符串,`.byte`, `.double`, `.float`, `.int`, `.long`, `.octa`,...

    ARM.rar_ARM 汇编_ARM汇编程序

    - **.globl**:声明全局符号,使其在其他模块中可访问。 - **.data** 和 **.text**:分别定义数据段和代码段。 ### 3. ARM汇编程序结构 一个典型的ARM汇编程序包括以下几个部分: - **头部**:包含声明和定义,如...

    x86汇编程序基础(AT&T语法)

    - `.globl _start`: 此指示符用于声明`_start`符号在整个程序中的可见性,即它是全局的。这是非常重要的,因为链接器会寻找名为`_start`的符号来确定程序的入口点。 #### 三、符号(Symbol)与地址 在汇编语言中,...

    参考资料—GNU ARM汇编语法1

    .globl _start _start: ; 入口函数体 ``` 理解这些基本概念后,开发者就能编写出针对ARM处理器的汇编程序,实现底层的硬件控制和优化。在实际应用中,汇编语言通常与高级语言如C或C++结合使用,用于性能关键的代码...

    Linux_ARM_汇编.pdf

    .globl _start _start: ; 定义新的入口点 ; 指令代码放在这里 ``` **五、宏定义** `.macro` 伪指令用于定义宏,方便重用代码。宏可以带参数,并支持参数默认值: ```assembly .macro SHIFTLEFT a, b if \b ...

    GUN-arm汇编

    .globl _start _start: ; 入口点的代码 ``` **五、宏定义** 宏定义允许创建可重用的代码块,可以带参数并设定默认值。例如: ```assembly .macro SHIFTLEFT a, b if \b MOV \a, \a, ASR #-\b .exitm endif ...

    Linux_的异常处理 很强大的分析

    这里,`.globl __vectors_start` 和 `.globl __vectors_end` 标记了异常向量表的起始和结束位置。在Linux内核启动过程中,这些异常向量会被复制到对应的基地址 (0xFFFF0000)。`vector_xxx + stubs_offset` 指出了当...

    Linux操作系统ARM指令集与汇编语言程序设计.pdf

    * .globl _start * _start: * ... * Key_led: * ... * led_blink: * ... 知识点: * 汇编语言程序设计:汇编语言程序设计是使用汇编语言编写程序的过程,通过使用汇编指令,控制处理器的寄存器和内存,实现特定的...

    uboot启动过程分析

    第一阶段对应的文件是cpu/arm920t/start.S和board/samsung/mini2440/lowlevel_init.S。U-Boot启动第一阶段流程如下: 1. 硬件设备初始化 在cpu/arm920t/start.S开头有如下代码: .globl _start _start: b start_...

    vxWorks bsp rominit 分析

    `"start of data"`字符串标记数据段的开始位置。 代码段从`.text`开始,并通过`.align 16`确保代码在内存中的位置对齐,提高CPU执行效率。rominit的主要流程如下: - `rominit`入口点首先关闭中断,然后跳转到`...

Global site tag (gtag.js) - Google Analytics