问题描述
我才开始学习汇编,我在书中看到只有 .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 (将#修改为@)