|
查看: 1319|回复: 2
|
请问这里有谁在学Linux编程?
[复制链接]
|
|
|
本帖最后由 褐眼睛 于 27-7-2021 04:22 PM 编辑
学Linux编程的人免不了知道:
又或者:
最近我个人开始学习Linux x64编程,发现它的ELF64可执行文件大小比同类的Windows PE可执行文件大小还要少2KB左右。
大家可以分享一下?不论你是用汇编还是其他程序语言的。
|
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 27-7-2021 04:27 PM
|
显示全部楼层
本帖最后由 褐眼睛 于 27-7-2021 04:30 PM 编辑
以下这个本来是写给Windows的,后来把它转换去Linux x64:
大家如果感兴趣,可以自行下载Flat Assembler for Linux,然后复制以下代码来编译试一试:
- format ELF64 executable 3
- segment readable executable
- entry $
- mov eax, 0x80000002
- cpuid
- mov dword [cpu], eax
- mov dword [cpu + 4], ebx
- mov dword [cpu + 8], ecx
- mov dword [cpu + 12], edx
- mov eax, 0x80000003
- cpuid
- mov dword [cpu + 16], eax
- mov dword [cpu + 20], ebx
- mov dword [cpu + 24], ecx
- mov dword [cpu + 28], edx
- mov eax, 0x80000004
- cpuid
- mov dword [cpu + 32], eax
- mov dword [cpu + 36], ebx
- mov dword [cpu + 40], ecx
- mov dword [cpu + 44], edx
- mov byte [cpu + 48],0xA ;Append line feed
- mov edx,49
- lea rsi,[cpu]
- mov edi,1 ; STDOUT
- mov eax,1 ; sys_write
- syscall
- xor edi,edi ; exit code 0
- mov eax,60 ; sys_exit
- syscall
- segment readable writeable
- cpu rb 49
复制代码
CPU名称只有48字节,这个小程序就是将BIOS预设好的CPU名称显示在终端窗口里。
|
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 28-7-2021 04:31 PM
|
显示全部楼层
最近由于研究ELF64文件格式,而反编译了一个Linux x64程序.
这个原理便被用在我的自创编译器里面。
|
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|