汇编语言中的全局_start是什么?

2024-04-28

这是我的汇编级代码...

section .text
global _start
_start: mov eax, 4
        mov ebx, 1
        mov ecx, mesg
        mov edx, size
        int 0x80
exit:   mov eax, 1
        int 0x80
section .data
mesg    db      'KingKong',0xa
size    equ     $-mesg

Output:

root@bt:~/Arena# nasm -f elf a.asm -o a.o
root@bt:~/Arena# ld -o out a.o
root@bt:~/Arena# ./out 
KingKong

我的问题是全局_start的用途是什么?我用 Mr.Google 碰了碰运气,发现它是用来告诉我的程序的起点的。为什么我们不能拥有_start告诉程序从哪里开始,就像下面给出的那样,它会产生一种 屏幕上出现警告

section .text
_start: mov eax, 4
        mov ebx, 1
        mov ecx, mesg
        mov edx, size
        int 0x80
exit:   mov eax, 1
        int 0x80
section .data
mesg    db      'KingKong',0xa
size    equ     $-mesg

root@bt:~/Arena# nasm -f elf a.asm
root@bt:~/Arena# ld -e _start -o out a.o
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048080
root@bt:~/Arena# ld -o out a.o
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048080

global指令是 NASM 特定的。它用于将代码中的符号导出到它在生成的目标代码中指向的位置。在这里你标记一下_start符号是全局的,因此它的名称被添加到目标代码中(a.o)。链接器(ld)可以读取目标代码中的该符号及其值,以便它知道在输出可执行文件中将何处标记为入口点。当您运行可执行文件时,它从标记为的位置开始_start在代码中。

If a global如果符号缺少指令,则该符号将不会放置在目标代码的导出表中,因此链接器无法了解该符号。

如果您想使用除_start(这是默认的),您可以指定-eld 的参数如下:

ld -e my_entry_point -o output_filename object_filename
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编语言中的全局_start是什么? 的相关文章

  • Mono 和 WebRequest 速度 - 测试

    在 mono 4 6 2 linux 中 我注意到 wget 下载文件的速度与webclient DownloadString 所以我做了一个小测试来调查 为什么 wget 明显比 C 快 根据我自己的实验 使用 wget 下载 手动读取文
  • Bash 中 $() 和 () 之间的区别

    当我打字时ls l echo file 支架的输出 这只是简单的回显 被获取并传递到外部ls l命令 就等于简单的ls l file 当我打字时ls l echo file 我们有错误 因为不能嵌套 内部外部命令 有人可以帮助我理解之间的区
  • 有关 Linux 内存类型的问题

    关于Linux内存我有以下问题 我知道活动内存是最常访问的内存部分 但是有人可以解释一下 linux 如何考虑将内存位置用于活动内存或非活动内存 主动存储器由哪些部分组成 磁盘 文件缓存是否被视为活动内存的一部分 有什么区别Buffers
  • 为什么在强度降低乘法和循环进位加法之后,这段代码的执行速度会变慢?

    我正在读书阿格纳 雾 https en wikipedia org wiki Agner Fog s 优化手册 https en wikipedia org wiki Agner Fog Optimization 我遇到了这个例子 doub
  • 68HC11计算sin(x)的汇编代码

    68HC11 使用泰勒级数或查找表计算正弦值的汇编代码是什么 显示值只能是整数 查找表如何工作 在这种情况下 如何使用它来实现泰勒级数 http en wikipedia org wiki Taylor series 如果您正在寻找浮点解决
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • “rep stos”x86 汇编指令序列有什么作用?

    我最近偶然发现了以下汇编指令序列 rep stos dword ptr edi For ecx重复 存储内容eax到哪里edi指向 递增或递减edi 取决于方向标志 每次 4 个字节 通常 这用于memset型操作 通常 该指令简单地写成r
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • 从 NASM 调用 C 函数 _printf 会导致分段错误

    我一直在尝试使用 NASM 在 Mac OS 和 Windows 上学习 64 位汇编 我的代码是 extern printf section data msg db Hello World 10 0 section text global
  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • 如何在两个不同帐户之间设置无密码身份验证

    我们可以在两台机器的两种不同用途之间设置无密码身份验证吗 例如 计算机A有用户A 计算机B有用户B 我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户 A 登录计算机 B 谢谢你 如果我理解你的问题 你能设置一下吗ssh
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • 大会,你好世界问题

    我正在 Linux 上学习 asm noobuntu 10 04 我得到了以下代码 http asm sourceforge net intro hello html http asm sourceforge net intro hello
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 使用 MIPS 从 Big Endian 到 Little Endian 无需逻辑运算?

    我正在使用 MIPS QtSpim 将 32 位字从 Big Endian 转换为 Little Endian 我下面显示的内容已检查且正确 不过我想知道还有什么其他方法可以让我进行转换 我虽然只使用了旋转和移位 但如果没有逻辑运算 我就无
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • CPU寄存器和多任务处理

    我目前正在学习汇编 我很困惑 CPU 寄存器如何与多任务一起工作 所以在多任务系统中 CPU可以随时暂停某个程序的执行并运行另一个程序 那么在这一步中寄存器值是如何保存的呢 寄存器是压入堆栈还是以其他方式 CPU 寄存器如何与多任务一起工作

随机推荐

  • 类似 Instagram 的强制触摸弹出模式

    我正在尝试复制 Instagram 的强制触摸功能 其中 1 将手指放在图像上 图像会变暗 悬停效果 简单 2 用力按一下 就会出现内容的弹出模式预览 3 用力按压 模式将扩展至全屏 我在使用 Ionic 4 Cordova 3d touc
  • microsoft.visualbasic.fileio 不存在

    我使用 NET Framework 4 0 在 Visual Studio 2012 中构建 C Web 应用程序 我添加了 Microsoft VisualBasic 作为对该项目的引用 我在使用以下代码行时遇到问题 使用 Microso
  • 如何在同一活动中为底部导航和导航抽屉创建侦听器?

    这是我的java代码 public class HomeActivity extends AppCompatActivity implements NavigationView OnNavigationItemSelectedListene
  • 当Python只应附加到一个列表时,它附加到两个列表

    我有一个名为 团队 的列表 其中包含两个对象 这些对象是同一类的对象 并且它们都有一个 成员 列表 我将单独附加到这些列表中 请参阅 Fight AddParticipant 但我附加的两个参与者对象似乎最终出现在两个团队对象中 这是意外行
  • 不要使用静态转换进行算术转换(cpp-core-guidelines)

    msvc 的 cpp 核心指南代码分析器告诉我 警告 C26472 不要使用static cast用于算术转换 使用 大括号初始化 gsl narrow cast or gsl narrow 类型1 对于这个片段 static cast
  • 在 FFmpeg 中使用 -filter_complex amerge 时混合流

    我目前遇到 ffmpeg 及其过滤器之一的问题 我正在尝试将视频的 2 个音频流合并为一个 为此我尝试了这个命令 ffmpeg i home maniaplanet Videos ManiaPlanet 2014 08 21 20 09 1
  • JAX-WS 和 Guice 3

    是否有某种方法可以获取使用 JAX WS 创建的 SOAP Web 服务类 并使用 Guice 3 0 guice persist 事务或什至只是简单的依赖注入来注入它们 guiceyfruit 包提供了一个 GuiceManaged 注释
  • openssh-server 未在 Docker 容器中启动

    我有一个奇怪的问题 我无法 ssh 到具有 IP 地址的 docker 容器172 17 0 61 我收到以下错误 ssh 172 17 0 61 ssh connect to host 172 17 0 61 port 22 Connec
  • 如何让Python bs4在XML上正常工作?

    我正在尝试使用 Python 和 BeautifulSoup 4 bs4 将 Inkscape SVG 转换为某些专有软件的类似 XML 的格式 我似乎无法让 bs4 正确解析一个最小的示例 我需要解析器尊重自闭标签 处理 unicode
  • 值范围为 1 - 365 的正则表达式

    值范围为 1 365 的正则表达式是什么 尝试这个 1 9 d 12 d 2 3 0 5 d 36 0 5 起始锚点 和端锚 是匹配整个输入和 不仅仅是其中的一部分 是为了分组 是为了交替 1 9 d 火柴1 to 99 12 d 2 火柴
  • Sublime Text 3:如何将快捷方式绑定到特定文件扩展名?

    我想自定义快捷方式 但仅将它们应用于特定扩展 例如 jump to matching bracket gt works in JS files gt customly bound to ctrl m go to matching tag p
  • 在 C 中摆弄很多位

    我想使用二进制标志来表示 C 中的数学集合 其中 位 i 已设置 意味着 项目 i 在集合中 这很方便 因为 并集 和 交集 等操作实现起来很简单 和 但是 我希望我的集合能够包含超过 32 个项目 此外 我希望我的代码能够在 32 位和
  • 即使 cookie 在开发人员工具中列出且 httpOnly 标志设置为 false,访问 document.cookie 也会返回空字符串

    有时 访问时document cookie在登录页面中 我得到一个空字符串 即使 cookie 列在 Chrome 和 Firefox 开发者工具中 我感兴趣的 cookie 的 httpOnly 标志设置为 false 我感兴趣的 coo
  • 接收客户端返回的数据

    我使用套接字连接从服务器发送了一个缩放数组到客户端 它运行良好 现在我想将数据发送回服务器以在服务器中取消缩放 数据一次每行发送到客户端 因此我尝试将它们按顺序放回到名为 Final 的空数组中 这是服务器 py import socket
  • 应用程序负载均衡器的 SurgeQueueLength 等效项

    我希望为 AWS ECS 上运行的服务设置自动缩放 来自ECS弹性伸缩文档 https docs aws amazon com AmazonECS latest developerguide service auto scaling htm
  • 寻找支付网关[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一家支付网关公司 这样我们就可以避免繁琐的 PCI DSS 认证及其相关费用 我现在就解决这个
  • 向 yii2 活动记录模型添加不在数据库中的属性

    我有一个 mySQL 数据库 其中有一个表videos和两列 开始时间 and end time 其格式为2017 01 24 15 38 11 我有一个活动记录模型Videos延伸 yii db ActiveRecord我想添加一些数据库
  • PHP上传图片

    好吧 我在这方面投入了很多时间 我是 PHP 编程新手 并试图掌握基础知识 但我有点迷失 因为昨晚我能够获得一个 PHP 表单来将基本数据 如名称地址和其他内容 上传到我的 MySQL 服务器 但今天我说让我们进行下一步 将图像发送到服务器
  • 使用 Servlet 启动 VLC HTTP Stream 时出现问题

    我正在为自己开发一个 VLC 项目 我的目标是创建一个 HTML 前端来启动流 我通过使用 Java Servlet 来完成此操作 概述 乌班图13 04 Java 7 21 冰茶 2 3 9 Eclipse JAVAEE IDE 雄猫7
  • 汇编语言中的全局_start是什么?

    这是我的汇编级代码 section text global start start mov eax 4 mov ebx 1 mov ecx mesg mov edx size int 0x80 exit mov eax 1 int 0x80