Compare commits

..

3 Commits

Author SHA1 Message Date
b6308582cc Uploaded Figa x86-64 2020-11-26 20:40:59 +01:00
79b0008002 Uploaded Figa x86-64 2020-11-26 20:40:26 +01:00
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 FILE = figa
EXEC = figasm
all: all:
@as -o $(FILE).o $(FILE).s as -o $(FILE).o $(FILE).s
@ld -o $(EXEC) $(FILE).o ld -o $(FILE) $(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
debug: debug:
@as -g -o $(FILE).o $(FILE).s as -g -o $(FILE).o $(FILE).s
@ld -o $(EXEC) $(FILE).o 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
`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) ![](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. 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: 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 ```bash
as -o figa.o figa.s as -o figa.o figa.s

54
figa.s
View File

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