Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
b6308582cc | |||
79b0008002 | |||
e6c51522da |
10
README.md
10
README.md
@ -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
|
||||
|
50
figa.s
50
figa.s
@ -1,31 +1,33 @@
|
||||
.section .data
|
||||
/* vim: set filetype=gas : */
|
||||
|
||||
schifo:
|
||||
.ascii "Che schifo la figa.\n"
|
||||
.data
|
||||
figa: .string "Che schifo la figa\n"
|
||||
figa_len: .quad .- figa
|
||||
|
||||
schifo_len:
|
||||
.long . - schifo
|
||||
linux: .string "Meglio Linux!\n"
|
||||
linux_len: .long .- linux
|
||||
|
||||
meglio:
|
||||
.ascii "Meglio Linux!\n"
|
||||
|
||||
meglio_len:
|
||||
.long . - meglio
|
||||
.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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user