为什么我可以在 .data 部分执行指令? Linux、NASM x86 汇编

问题描述

我才开始学习汇编,我在书中看到只有 .text 部分可以执行。 那么为什么我可以执行存储在 .data 部分的指令? 代码如下:

global _start

section .data
msg: db "hello world",10
msg_len: equ $-msg

proc_write_and_exit:
        mov eax,4      ;write syscall
        mov ebx,1      ;stdout handle number
        mov ecx,msg
        mov edx,msg_len
        int 80h         ;call program interrupt

        mov eax,1      ;_exit syscall
        mov ebx,0      ;program exit code
        int 80h

section .text
_start: jmp proc_write_and_exit

在 Ubuntu 18.04.4 LTS 上运行。

构建: nasm -f elf execute_data_section.asm && ld -m elf_i386 execute_data_section.o

运行:./a.out

输出:“你好世界”

那么哪些部分真的可以执行,哪些部分不能呢?我可以在哪里阅读以确保?我现在很困惑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...