Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – GNU汇编程序是否添加了自己的入口点?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

说我有以下汇编代码: .section .text .globl _start _start: 如果我使用以下命令创建了可执行文件: as 1.s -o 1.o ld 1.o -o 1 GNU汇编程序是否会将自己的入口点添加到我的可执行文件中,该可执行文件调用_start或将_start作为实际的入口点? 有关更多详细信息,请参见此question. 包含另一个问题中提到的启动代码的文件crt0
@H_419_2@
我有以下汇编代码

.section .text

.globl _start
_start:

如果我使用以下命令创建了可执行文件

as 1.s -o 1.o
ld 1.o -o 1

GNU汇编程序是否会将自己的入口点添加到我的可执行文件中,该可执行文件调用_start或将_start作为实际的入口点?

有关更多详细信息,请参见此question.

解决方法

包含另一个问题中提到的启动代码文件crt0.o(或crt1.o或者此文件调用)也是用汇编语言编写的.

所以Linker(“ld”)所做的就是搜索所有目标文件(实际上都是使用“as”创建的)为名为“_start”的符号,该符号成为入口点.

使用“ld”时,您当然可以自由地将crt0.o添加到汇编程序编写的程序中.但是在这种情况下,你不能在汇编程序文件中将你的符号命名为“_start”,而是命名为“main”:

.globl main
.text
main:
    ...

否则“ld”将打印一条错误消息,因为它会找到两个名为“_start”的符号,并且它不知道哪一个是入口点!

@H_419_2@

大佬总结

以上是大佬教程为你收集整理的linux – GNU汇编程序是否添加了自己的入口点?全部内容,希望文章能够帮你解决linux – GNU汇编程序是否添加了自己的入口点?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。