gpt4 book ai didi

assembly - 在 Cygwin 中通过 GNU 汇编器运行 hello.s 时出现段错误

转载 作者:行者123 更新时间:2023-12-02 19:22:20 29 4
gpt4 key购买 nike

我在Cygwin(Windows7-64位)中使用gcc来运行这个例子 http://asm.sourceforge.net/howto/build.html

.data                   # section declaration
msg:
.ascii "Hello, world!\n" # our dear string
len = .-msg # length of our dear string
.text # section declaration
# we must export the entry point to the ELF linker or
.global _start # loader. They conventionally recognize _start as their
# entry point. Use ld -e foo to override the default.
_start:
# write our string to stdout
movl $len,%edx # third argument: message length
movl $msg,%ecx # second argument: pointer to message to write
movl $1,%ebx # first argument: file handle (stdout)
movl $4,%eax # system call number (sys_write)
int $0x80 # call kernel
# and exit
movl $0,%ebx # first argument: exit code
movl $1,%eax # system call number (sys_exit)
int $0x80 # call kernel

通过 Cygwin 中的命令行 $as -o hello.o hello.s && ld -s -o hello hello.o && ./hello结果是 段错误

你能帮我吗?

最佳答案

Cygwin 不会使 Windows 与 Linux 二进制兼容,因此使用 int $0x80 的 Linux 系统调用将会失败,因为 Windows 的系统调用约定完全不同。不过,生成的二进制文件应该可以在实际(或兼容的)Linux 环境中正常工作。

关于assembly - 在 Cygwin 中通过 GNU 汇编器运行 hello.s 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132781/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com