assembly - 警告:找不到入口符号_start;默认为 0000000008048060
问题描述
我使用 NASM 不断收到错误消息,我正在使用在线编译器:compileonline.com 这是我的代码。(注意这是来自另一个来源)
segment .text
global main
main:
xor edx, edx
mov eax, 15
mov ecx, 3
div ecx
xor ecx, ecx
mov cx, ax
mov ebx,1 ; arg1, where to write, screen
mov eax,4 ; write sysout command to int 80 hex
int 0x80 ; interrupt 80 hex, call kernel
exit: mov eax, 1
xor ebx, ebx
int 0x80
请解释我做错了什么,以及我理解的位置。这是我的输出:
$nasm -f elf *.asm; ld -m elf_i386 -s -o demo *.o
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048060
$demo
解决方案
实际上只有在 C(和 C++)中,起点被命名为main
.
默认链接描述文件通常使用start
或_start
作为实际入口点。如果您重命名或添加正确的符号,那么链接器不应该抱怨这一点。
推荐阅读
- python - 从python 3中的字节中删除一些特定内容
- python - 为什么用不同的参数打印一个函数两次会改变输出:python
- vba - 根据单元格值将数据从一张表复制到另一张表
- sql - SQL Server:使用递归 CTE 解决组成员身份
- .net - winforms多行验证
- ios - 在自定义 UITextField 类中实现 TextField 协议
- reactjs - 使用 React Loadable 进行代码拆分和使用容器进行路由
- c# - 如何从电报机器人创建私人消息?
- docker - 带有依赖项目的 Dockerfile
- php - 使用 jQuery 的新验证不会发送 tha 值