如何解决为什么我可以在 .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 举报,一经查实,本站将立刻删除。