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
2 changed files with 34 additions and 30 deletions

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