gpt4 book ai didi

linux - 使用汇编应用程序关闭 Linux 时出现段错误

转载 作者:太空狗 更新时间:2023-10-29 11:27:59 25 4
gpt4 key购买 nike

以下应用程序在执行时生成段错误:

.set __NR_reboot, 169
.set LINUX_REBOOT_CMD_POWER_OFF, 0x4321FEDC

.section .text
.globl _start
_start:
movl $LINUX_REBOOT_CMD_POWER_OFF, %ebx
movl $__NR_reboot, %eax
int $0x80

这是一个非常简单的应用程序,我一定遗漏了一些非常明显的东西。有人可以帮助我吗?

它是用以下代码编译的:

as shutdown.s -o shutdown.o
ld shutdown.o -o shutdown

编辑:

即使只是调用系统调用 sync() 的简单应用程序也会生成段错误:

.set __NR_sync, 36

.section .text
.globl _start
_start:
movl $__NR_sync, %eax
int $0x80

movl $1, %eax #syscall exit
movl $0, %eax
int $0x80

最佳答案

警告:记得在调用reboot(2) 之前sync(2)

reboot(2)系统调用需要 4 个参数。你将它与 libc 混淆了包装器。

警告:记得在调用reboot(2) 之前sync(2)

(它实际上采用了 magic* 参数,因此人们必须重新阅读文档并且不要忘记调用 sync(2)。)

警告:我是否说过在调用reboot(2) 之前您必须sync(2)

关于linux - 使用汇编应用程序关闭 Linux 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565034/

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