Portál AbcLinuxu, 19. dubna 2024 08:32


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
9.2.2022 07:41 k8o | 127.0.0.1
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkné, díky :)
🪐‏
9.2.2022 09:48 Leo
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
+1 Dobra prace. Co tak jeste jeden challenge a zbavit se stdint.h?
16.2.2022 10:52 Guox
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
to byl ale ten nesmyslny bulvarni nadpis zpravdivel, to po OP nemuzes chtit
9.2.2022 11:48 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
Tato varianta je pro x86-64, protože inline assembler
Dá se to napsat i tak, že to podporuje více platforem zaráz. Před nějakou dobou jsem si s tím hrál a zde je výsledek, který podporuje x86-64 a ARM (nebo aspoň 'běžné' ARMy, nějaký specielní možná fungovat nebude):

#include <stdint.h>

const uint64_t _start[] __attribute__((section(".text"))) = {
    0xe3a00001909032eb, 0xe3a0200ce28f1014,
    0xef000000e3a07004, 0xe3a07001e3a00000,
    0x6c6c6548ef000000, 0x0a214d5241202c6f,
    0x18ec834800000000, 0x4800000045058b48,
    0xa20fc03148240489, 0x0c24548908245c89,
    0x142444c710244c89, 0x01c0c74800000a21,
    0x0001c7c748000000, 0x480124748d480000,
    0x050f00000015c2c7, 0x480000003cc0c748,
    0x6c654820050fff31, 0x00000000202c6f6c,
};

Kompiluje se pomocí gcc -static -nostdlib

Přeji příjemnou zábavu :)
What Big Oil knew about climate change
9.2.2022 15:07 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Tato varianta je pro x86-64, protože inline assembler
U prvni verze jsem si rikal, jestli by to nebylo citelnejsi psat rovnou v assembleru... Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]

Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
9.2.2022 17:49 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]
Ten není můj, ten je odsud :) Můj je jen ten s tou platformní vidličkou...
10.2.2022 10:25 ehmmm
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Muzu se prosim nechat poddat a videt assembler od tohodle? :)

(Oni to zrejme budou dva assemblery, ze?)
10.2.2022 12:28 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
10.2.2022 19:41 ehmmm
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Dik, taky dobry cteni.
Gréta avatar 10.2.2022 20:53 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
10.2.2022 20:55 Xerces
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Náčelníku? Možná to vypadá, že pořád jenom kritizuju, ale tohle vypíše Hello, a označení CPU a ne Hello, world! Tak to jen tak pro úplnost. :-)
9.2.2022 11:52 Petr
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
"ze prče"?

Fake and gay bluebear, originál uměl česky!
Petr Tomášek avatar 9.2.2022 12:02 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
"ze z prče"?
multicult.fm | monokultura je zlo | welcome refugees!
9.2.2022 12:09 _
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
gay byl vždycky
Petr Tomášek avatar 9.2.2022 12:01 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
A kolik to dělá B po striptýzu?
multicult.fm | monokultura je zlo | welcome refugees!
Bluebear avatar 9.2.2022 15:08 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
592 byte (asi se může trochu lišit na různých strojích podle toho, jak se chová linker).
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
Josef Kufner avatar 9.2.2022 15:30 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
V dobách DOSu by to bylo na pár bajtů. Formát COM žádné hlavičky neměl, to se prostě nasypalo do CPU tak, jak to bylo na disku. Pár movů s int 21h a bylo to. Ani nepotřebuješ překladač, prostě to nacvakáš v hexaeditoru.

Dnes se do podobné situace člověk dostane akorát když si hraje s jednočipy. To pak má třeba půl kilobajtu paměti, kam se potřebuje vejít s nějakým netriviálním výpočtem a ve zbytku paměti má hromadu dat.
Hello world ! Segmentation fault (core dumped)
9.2.2022 15:59 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
s/do CPU/do paměti/

Jinak před nějakou dobou tu byl odkaz na toto.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
Bluebear avatar 9.2.2022 16:21 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Jistě - byly to tehdy jednodušší a snad šťastnější časy :-) - ale DOS byl taky celkově jednodušší a měl méně schopností.
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
10.2.2022 01:56 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Jste málo radikální - nejmenší program je ten, který nic nedělá :-) Koncepční otázka ovšem je, zda po něm chtít, aby se spustil :-D
-- OldFrog
Heron avatar 10.2.2022 13:15 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Přesně tak. Bez assembleru bych to nedal, ale com by měl pár B.
9.2.2022 16:36 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
GNU Assembler, linker script podobný, 376 bajtů (jako ELF).
        .text
        .code64

        .globl _start
_start:
        movb    $1, %al          /* syscall num */
        movw    $1, %di          /* file descriptor */
        movq    $hello_str, %rsi /* text */
        movq    $(hello_str_end - hello_str), %rdx /* length */
        syscall
        movb    $60, %al
        xorw    %di, %di
        syscall

        .data
hello_str:
        .ascii  "Hello, World!\n"
hello_str_end:
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
10.2.2022 20:37 kvr
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Tak nějak. Kdysi jsem se dostal na cca 400 bytes, ale byl jsem trochu slušnější a inicializoval jsem celé 32-bit proměnné, nejenom spodních 8 bitů. Matně si vzpomínám, že linker script jsem nepotřeboval, stačil snad nějaký option ke gcc, aby vynechalo standardní linker script, ale už si to moc nepamatuju.
11.2.2022 01:16 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
A ako to prekladáš?
debian.plus@protonmail.com
11.2.2022 16:04 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
V podstatě stejně.
as -64 hello.S -o hello.o && ld --omagic -s -x -static -T script.ld hello.o
(tj. x86_64, ne debugovací symboly, strip a statické)

Linker script stejný, jenom místo .rodata tam je .data.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
9.2.2022 17:05 Aleš
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
To je fakt dementní jazyk. není důvod, aby to mělo víc než dvacet bajtů.
9.2.2022 19:02 Wirth
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
To neni jazykem ale operacnim systemem. Treba v DOS staci do DX dat "Hello World", do AH volani zabudovane funkce "print" (tusim AH,9) a zavolat preruseni INT 0x21. A pak jeste dat vedet ze koncime pres AH 0x4c a opet INT 0x21. Tohle v linuxu das s par instrukcema navic protoze jdes pres stdout (BX,1) a sys_write (BX,4) a tusim jeste musis i dat vedet jak dlouhy stream tam pujde (DX,delka) a samotny stream(CX, pointr na "Hello World"). No a linux ma INT 0x80 a sys_exit je neco podnyho jako v DOSu (AX,1; BX,0).
11.2.2022 10:23 ...
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
je to jazykem, zkus si to v javascriptu
11.2.2022 15:19 nadtržítko
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Kdybys nemel v hlave slamu tak bys vedel, ze skriptovaci jazyky tu tahat co? Tu tahat nebudeme. Nebudeme proc? Protoze nemaji linker. A kdyz ho nahodou i maji tak co? Tak je ceckovy! :-)
11.2.2022 18:35 ...
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Kdybys neměl v hlavě nasráno, tak bys pochopil, že celý ten linker a další c hovna jsou k ničemu a javascript je mnohem efektivnější a hotový program je menší.
11.2.2022 20:25 plostenka | blog: plstnk
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Tak ukaz svoji JS binarku, nebo procesor/ASIC na kterem bezi JS nativne.
12.2.2022 01:40 ...
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
K čemu binarku? Uvażuješ jako dinosaurus.
12.2.2022 16:59 plostenka | blog: plstnk
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Tak predved ten ASIC co zpracovava JS nativne, bez binarky.
14.2.2022 00:07 ...
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
to umi kazdy prohlizec
10.2.2022 10:59 ELF
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

Tohle je 45 bajtu (avsak to predpoklada Linux jako behove prostredi).

Hello World by byl vetsi (tohle je pouze return 42;).
10.2.2022 13:02 ehmmm
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Kdyby me nevyrusil kolega, tak bych mohl rict, ze jsem to precetl jednim dechem. Bomba!

Celkove se tady objevila skvela a pro me velmi prinosna diskuze.
10.2.2022 15:50 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
Tvoj kód/preklad864 B
+ moje úpravy/preklad736 B
Ušetrene:131 B (14,8 %)

P.S.: Velikosť súboru zistíš: du -b FILE.
debian.plus@protonmail.com
11.2.2022 00:06 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Tvoj kód/preklad864 B
+ moje úpravy/preklad496 B
Ušetrene:368 B (42,59 %)
debian.plus@protonmail.com
10.2.2022 20:41 problem solved
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
echo Hello world
Gréta avatar 10.2.2022 20:57 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny

tttttssss echo má nějakejch 40kb :O ;D

10.2.2022 21:10 Xerces
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Nj., ale kolik má to jádro Linuxu na kterým se ty vytuněný binárky pouštěj. :-)
Petr Tomášek avatar 11.2.2022 22:10 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Chtěl jsi spíš říci: „kolik má bash“?

Linuxové ňadro volá ten 400-bytový program v assembleru...
multicult.fm | monokultura je zlo | welcome refugees!
11.2.2022 00:21 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
tttttssss echo má nějakejch 40kb :O ;D
U mě taky... Ale ten se pravděpodobně nepoužije, typicky se použije echo zabudovaný přímo v shellu...
Gréta avatar 10.2.2022 20:59 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin

kde jakoby vubec končí c a začíná asm :O :O

oslavná píseň na pana soudruha generalisima prezidentčíka Petra Pavla Pávka 🎶🫡🦚🎶
11.2.2022 13:00 _
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
c je asm a trocha syntaktickeho cukru

jazyk pro psychopaty
xxxs avatar 12.2.2022 14:17 xxxs | skóre: 25 | blog: vetvicky
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin
dufam, ze sa nedaju zahanbit ani fanusikovia electronu.
xkucf03 avatar 15.2.2022 19:40 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
Odpovědět | Sbalit | Link | Blokovat | Admin

V čem je problém? Kdybys chtěl programovat tímhle způsobem, tak bys vyzobal/reimplementoval různé části standardní knihovny a řešil by sis přenositelnost sám. Teoreticky kdyby standardní knihovna byla moc velký moloch a potřeboval bys z ní jen nějakých 10 %, tak by to třeba smysl dávalo, ale typicky z ní budeš potřebovat větší část a navíc je tu ta přenositelnost… řešit tyhle věci v kódu aplikace mi přijde nesmyslné. Jako ukázka je to fajn, ale… jinak už by dávalo větší smysl to řešit na úrovni jazyka (tzn. úplně obejít céčko a místo něj mít něco jiného, co se napojuje na systémová volání).

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.