ll: Linux_Logo in assembly language

latest version is 0.49

31 Architectures, Smallest Linux executable is 870 bytes! (on m68k)

NEWS:


BACKGROUND:

This is a port of my linux_logo program to use raw assembly language. By using assembly and syscalls, you can have extremely fast and small binaries that don't use libc at all!

So far I have 6502, 8086, alpha, arm, arm_thumb, arm_thumb2, arm64, avr32, cosmac elf 1802, crisv32, ia64, m68k, m88k, microblaze, micromips, mips, mips16, parisc, pdp-11, ppc, RiSC, riscv, riscv-compressed, s390, sh3, sparc, vax, x86, x86_64, x86_x32, and z80 versions. Partial support for 8051, 65c816.

If you have an unsupported architecture and will be willing to give me a shell account on your machine, let me know. It would be great if every Linux-supported architecture had its own assembly version of linux_logo.

DOWNLOADS:


PUBLICATIONS ABOUT ll:


DOCUMENTATION:

Linux assembly source files for your viewing pleasure: Non-linux but *NIX versions: 8 and 16-bit versions:
Here is a comparison of the size of the binaries after having sstrip run on them.

Total executable size:

Architecture Size
8086 780 bytes
m68k 870 bytes
pdp-11 890 bytes
z80 891 bytes
crisv32 905 bytes
arm_thumb2 908 bytes
avr32 914 bytes
1802 915 bytes
arm_thumb 920 bytes
vax 950 bytes
riscv32-imc 961 bytes
x86 968 bytes
sh3 994 bytes
x86_x32 1005 bytes
riscv64-imc 1019 bytes
x86_64 1027 bytes
s390 1064 bytes
arm64 1094 bytes
mips16 1104 bytes
riscv32-im 1125 bytes
6502 1130 bytes
micromips 1147 bytes
riscv64-im 1161 bytes
arm eabi 1161 bytes
PowerPC 1165 bytes
SPARC 1221 bytes
m88k 1240 bytes
microblaze 1298 bytes
MIPS 1314 bytes
PA-RISC 1400 bytes
RiSC 1418 bytes
alpha 1821 bytes
itanium 2826 bytes


LZSS decompressor size:

Architecture Size
8086 56 bytes
x86 57 bytes
m68k 58 bytes
x86_64 60 bytes
crisv32 66 bytes
x86_x32 66 bytes
arm_thumb2 68 bytes
vax 69 bytes
arm_thumb 70 bytes
sh3 76 bytes
1802 80 bytes
avr32 80 bytes
micromips 80 bytes
riscv64-imc 84 bytes
riscv32-imc 84 bytes
mips16 90 bytes
arm64 96 bytes
z80 96 bytes
pdp-11 108 bytes
PowerPC 108 bytes
arm eabi 108 bytes
riscv64-im 116 bytes
riscv32-im 116 bytes
s390 122 bytes
m88k 128 bytes
SPARC 128 bytes
6502 134 bytes
microblaze 136 bytes
MIPS 148 bytes
PA-RISC 152 bytes
alpha 224 bytes
itanium 272 bytes
RiSC 316 bytes


strcat (or more accurately, stpcpy) size:

Architecture Size
1802 8 bytes
8086 8 bytes
z80 8 bytes
pdp-11 8 bytes
m68k 8 bytes
x86 8 bytes
vax 8 bytes
x86_x32 9 bytes
x86_64 9 bytes
crisv32 10 bytes
s390 12 bytes
avr32 12 bytes
micromips 14 bytes
mips16 14 bytes
sh3 14 bytes
arm_thumb2 18 bytes
arm_thumb 18 bytes
riscv64-imc 18 bytes
riscv32-imc 18 bytes
arm64 20 bytes
PowerPC 24 bytes
arm eabi 24 bytes
6502 27 bytes
riscv64-im 28 bytes
riscv32-im 28 bytes
microblaze 28 bytes
m88k 28 bytes
PA-RISC 28 bytes
MIPS 28 bytes
SPARC 28 bytes
alpha 56 bytes
itanium 64 bytes
RiSC 200 bytes
For a bit of commentary on why the sizes end up the way they do, see the README
You might ask if all the above works? Yes. Written and tested on: Non-Linux versions:

Yet to come:


Other assembly language projects by me...
Spaceship Back to My Main Homepage
©VMW Web Design (vince _at_ deater.net): 27 September 2017