From e6c51522dad7dceaa6949477641f99a1154196b5 Mon Sep 17 00:00:00 2001 From: Talebian12 Date: Thu, 26 Nov 2020 20:37:30 +0100 Subject: [PATCH] Uploaded Figa x86-64 --- README.md | 10 ++++++---- figa | Bin 0 -> 9016 bytes figa.o | Bin 0 -> 1104 bytes figa.s | 54 ++++++++++++++++++++++++++++-------------------------- 4 files changed, 34 insertions(+), 30 deletions(-) create mode 100755 figa create mode 100644 figa.o diff --git a/README.md b/README.md index d042411..896acb0 100644 --- a/README.md +++ b/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 diff --git a/figa b/figa new file mode 100755 index 0000000000000000000000000000000000000000..843b51295635eb3ea720dae9f1038bbd1885f584 GIT binary patch literal 9016 zcmeI2ze~eF6vtoFRTnE6 zIj%uk)u!etIWrwvKPhJvayo!(q;X0<(0WEMbr~2nb=bFtIe~*TQCDKLqCGHb`Y6o8 z1egF5U;<2l2`~XBzyz286JP>NU?mCMI8PtWErk&?}F)uZnHhGyS zP@<$02UD3lmAzT@F29ll`J$Ns6JP>NfC(@GCcp%k025#WOn?dee*$M+Uj(<^UVA9| zo@nU3mb!2Wl?` z9?aY~+K(~YcY!%+SQ|B4Iv7iupy42NV7C8)^6`H3Ey_iuDzqo40r!^RGohagfE}HN e4XLxWDTZ=wYo`{8;WWPfmW(axf2IEYCH>zLNK?1~ literal 0 HcmV?d00001 diff --git a/figa.o b/figa.o new file mode 100644 index 0000000000000000000000000000000000000000..1ced1272171d4ad6e5339c943bab53cbcfb9bb28 GIT binary patch literal 1104 zcmbtR!AiqG5S<#UwH~TarJ!g$=tYSX1TP{1Q6g0E;<;`$Z3D4|W`%n4Ttx75di2&` z@CW=3o!Omj!X}>FK;F!od9$-Kua~W>g;EL3DZx3Uo?!uQ7gF0-rVkZZhPz<$9n3yS z63k`_-cR-^A$Y4Rtd&hXA87ty>sn{5yp&0C4atIu0!6Xgz~`{*uac=B*i_?#Y2|LojY|{-MS1qQ6$uC%qi# z*N(#h#PnqSSAIK@VkA+!$@NwdGpm6ei#H=Yws_O$sm0Ix^pck+DLUXKa-^|utWg*X zPljU&-lLELyiSsEnSXmfllJZlOur^ixV%Q%<~RzKlpzh5ZKO z0rU3eCmc6(WH-0LBMeYYTR$}d3+?{N&+gNt8~qm(G#|Rh?tcY2`)-na@I~~#?6L1( Q$6%4Z!A&)@Vzh1jFWQwu*Z=?k literal 0 HcmV?d00001 diff --git a/figa.s b/figa.s index 147d541..b04a68d 100644 --- a/figa.s +++ b/figa.s @@ -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 +