文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3. 包含
多源码文件及嵌入资源。
include
可以将代码分散到多个源文件中,以便于维护。
定义保护宏,避免被多次包含。
; start.inc %ifndef __START__ %define __START__ global _start section .text _start: jmp main %endif
; test.s %include "start.inc" section .rodata hello : db `hello, world!\n` section .text main: jmp .print .print: mov rax, 1 mov rdi, 1 mov rsi, hello mov rdx, 14 syscall jmp .exit .exit: mov rax, 60 xor rdi, rdi syscall
预处理阶段会进行合并。
$ nasm -E test.s [global _start] [section .text] _start: jmp main [section .rodata] hello : db `hello, world!\n` [section .text] main: jmp .print .print: mov rax, 1 mov rdi, 1 mov rsi, hello mov rdx, 14 syscall jmp .exit .exit: mov rax, 60 xor rdi, rdi syscall
incbin
嵌入其他文件资源。可在同一段下嵌入多个文件内容(或部分),内容会被合并。
incbin "filename" [, skip, length]
; test.s section .abc incbin "test.s", 0, 30 incbin "makefile"
$ readelf -x .abc ./test
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论