Compare commits

..

3 Commits

Author SHA1 Message Date
Talebian12 b6308582cc Uploaded Figa x86-64 2020-11-26 20:40:59 +01:00
Talebian12 79b0008002 Uploaded Figa x86-64 2020-11-26 20:40:26 +01:00
Talebian12 e6c51522da Uploaded Figa x86-64 2020-11-26 20:37:30 +01:00
4 changed files with 38 additions and 66 deletions

View File

@ -1,23 +1,10 @@
PREFIX ?= /usr
FILE = figa
EXEC = figasm
all:
@as -o $(FILE).o $(FILE).s
@ld -o $(EXEC) $(FILE).o
clean:
@rm $(FILE).o
@rm $(EXEC)
install:
@mkdir -p $(DESTDIR)$(PREFIX)/bin
@cp -p $(EXEC) $(DESTDIR)$(PREFIX)/bin/figasm
uninstall:
@rm $(DESTDIR)$(PREFIX)/bin/figasm
as -o $(FILE).o $(FILE).s
ld -o $(FILE) $(FILE).o
debug:
@as -g -o $(FILE).o $(FILE).s
@ld -o $(EXEC) $(FILE).o
as -g -o $(FILE).o $(FILE).s
ld -o $(FILE) $(FILE).o

View File

@ -1,19 +0,0 @@
pkgname=figasm
pkgver=69.420
pkgrel=1
pkgdesc="figasm è una semplice port in Assembly del celebre figa"
arch=('x86_64')
url="https://git.ignuranza.net/chic_luke/figasm.git"
license=('SWAG')
makedepends=('git')
build() {
git clone "${url}"
}
package() {
cd "${pkgname}"
make
make DESTDIR="$pkgdir" install
}

View File

@ -1,6 +1,6 @@
# figASM
`figasm` è una semplice port in Assembly del celebre [figa](github.com/crisbal/kslf.git), celebre pacchetto per Arch Linux, una volta disponibile nella AUR ma bannato dal mantenitore @il\_muflone per comprensibili ragioni politically correct:
`figasm x86_64` è una semplice port in Assembly del celebre [figa](github.com/crisbal/kslf.git), celebre pacchetto per Arch Linux, una volta disponibile nella AUR ma bannato dal mantenitore @il\_muflone per comprensibili ragioni politically correct:
![](https://i.imgur.com/1TQXOgX.png)
@ -16,13 +16,15 @@ Ma noi non lo pensavamo. A ben vedere, neanche lui stesso lo pensava:
Questa volta, invece, il profeta @il\_muflone ci vide giusto. Perché la `figa` avrebbe fatto il suo ritorno di botto. Ma questa volta in pieno stile arch: nessun lentissimo script interpretato. Tutto Assembly. Nativo. Super ottimizzato per l'unica architettura supportata da Arch Linux, ossia x86\_64.
## Perché dovrei usare `figasm` anziché `figa`?
Ma anche il venerando @chic\_luke si sbagliava, perché la `figasm` era scritto per x86. Questo vuol dire che non è veramente ottimizzato per x86\_64, qui sono arrivato io.
## Perché dovrei usare `figasm x86_64` anziché `figa x86`?
Perché la matematica non è un'opinione e i numeri parlano chiaro:
![](https://i.imgur.com/PX7C4pI.png)
![](https://i.imgur.com/PZQVmv1.png)
# Come faccio a compilare `figasm` da sorgente?
# Come faccio a compilare `figasm x86_64` da sorgente?
```bash
as -o figa.o figa.s

54
figa.s
View File

@ -1,31 +1,33 @@
.section .data
schifo:
.ascii "Che schifo la figa.\n"
schifo_len:
.long . - schifo
/* vim: set filetype=gas : */
meglio:
.ascii "Meglio Linux!\n"
.data
figa: .string "Che schifo la figa\n"
figa_len: .quad .- figa
meglio_len:
.long . - meglio
linux: .string "Meglio Linux!\n"
linux_len: .long .- linux
.text
.globl _start
.section .text
.global _start
_start:
movl $4, %eax
movl $1, %ebx
leal schifo, %ecx
movl schifo_len, %edx
int $0x80
movl $4, %eax
movl $1, %ebx
leal meglio, %ecx
movl meglio_len, %edx
int $0x80
movl $1, %eax
xorl %ebx, %ebx
int $0x80
push %rbp
mov %rsp, %rbp
mov $1, %rax
mov $1, %rdi
lea figa, %rsi
mov figa_len, %rdx
syscall
mov $1, %rax
lea linux, %rsi
mov linux_len, %rdx
syscall
xor %rdi, %rdi
mov $60, %rax
syscall