Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
b6308582cc | |||
79b0008002 | |||
e6c51522da |
10
README.md
10
README.md
@ -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
54
figa.s
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user