- Mastering Assembly Programming
- Alexey Lyashko
- 215字
- 2021-08-20 10:23:33
The Linux Assembly template (32-bit)
On Linux, although files on disc are divided into sections, executables in memory are divided into code and data segments. The following is our template for the ELF 32-bit executable for Linux:
; File: src/template_lin.asm
; Just as in the Windows template - we tell the assembler which type
; of output we expect.
; In this case it is 32-bit executable ELF
format ELF executable
; Tell the assembler where the entry point is
entry _start
; On *nix based systems, when in memory, the space is arranged into
; segments, rather than in sections, therefore, we define
; two segments:
; Code segment (executable segment)
segment readable executable
; Here is our entry point
_start:
; Set return value to 0
xor ebx, ebx
mov eax, ebx
; Set eax to 1 - 32-bit Linux SYS_exit system call number
inc eax
; Call kernel
int 0x80
; Data segment
segment readable writeable
db 0
; As you see, there is no import/export segment here. The structure
; of an ELF executable/object file will be covered in more detail
; in chapters 8 and 9
As was mentioned in the preceding code, these two templates will be used as a starting point for any code we will write in this book.
推薦閱讀
- 數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)(Java語言實現(xiàn))
- Getting Started with PowerShell
- 數(shù)據(jù)結(jié)構(gòu)簡明教程(第2版)微課版
- Visual C++串口通信技術(shù)詳解(第2版)
- 差分進(jìn)化算法及其高維多目標(biāo)優(yōu)化應(yīng)用
- PLC編程及應(yīng)用實戰(zhàn)
- Mastering Predictive Analytics with Python
- ANSYS Fluent 二次開發(fā)指南
- Machine Learning With Go
- 一覽眾山小:ASP.NET Web開發(fā)修行實錄
- Learning TypeScript
- Learning Dynamics NAV Patterns
- HTML5程序開發(fā)范例寶典
- Python網(wǎng)絡(luò)運維自動化
- Modern R Programming Cookbook