写一个linux的可执行程序,需要能够写进内存,非elf格式
时间: 2024-01-23 10:03:34 浏览: 141
编写linux shell程序
在Linux中,可执行程序通常是使用 ELF(可执行和可链接格式)文件格式编写的。如果你希望编写一个非 ELF 格式的可执行程序,你可以考虑使用汇编语言编写一个 bootloader,并将其写入硬盘或软盘引导扇区,然后在启动时从引导扇区加载它。
下面是一个简单的 bootloader 的例子,它将 "Hello, world!" 写入屏幕上:
```
; bootloader.asm
bits 16
section bootloader
start:
mov ah, 0x0e ; BIOS teletype function
mov al, 'H' ; output 'H'
int 0x10 ; call BIOS video interrupt
mov al, 'e' ; output 'e'
int 0x10
mov al, 'l' ; output 'l'
int 0x10
int 0x10
mov al, 'o' ; output 'o'
int 0x10
mov al, ','
int 0x10
mov al, ' '
int 0x10
mov al, 'w'
int 0x10
mov al, 'o'
int 0x10
mov al, 'r'
int 0x10
int 0x10
mov al, 'l'
int 0x10
mov al, 'd'
int 0x10
cli ; disable interrupts
hlt ; halt the CPU
times 510-($-$$) db 0 ; pad with zeroes up to byte 510
dw 0xaa55 ; boot signature
```
你可以使用 nasm 编译该 bootloader:
```
nasm -f bin -o bootloader.bin bootloader.asm
```
然后,你可以将 `bootloader.bin` 写入硬盘或软盘的引导扇区。具体的方法因操作系统而异,这里不再赘述。
阅读全文