C-kielellä:
#include
int main(void)
{
printf("Hello world!\n");
return 0;
}
Linux Assembly Tutorial:
section .data
hello: db 'Hello world!',10 ; 'Hello world!' plus a linefeed character
helloLen: equ $-hello ; Length of the 'Hello world!' string
section .text
global _start
_start:
mov eax,4 ; The system call for write (sys_write)
mov ebx,1 ; File descriptor 1 - standard output
mov ecx,hello ; Put the offset of hello in ecx
mov edx,helloLen ; helloLen is a constant, so we don't need to say
; mov edx,[helloLen] to get it's actual value
int 80h ; Call the kernel
mov eax,1 ; The system call for exit (sys_exit)
mov ebx,0 ; Exit with return code of 0 (no error)
int 80h
Mutta sitten taas gcc-kääntäjällä C-koodi kääntyy Assemblyksi? ihan eri tavalla
gcc -S hello.c
Saadaan seuraavanlaista koodia
.file "hello.c"
.section .rodata
.LC0:
.string "Hello world!"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $.LC0, %edi
call puts
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Debian 4.7.2-5) 4.7.2"
.section .note.GNU-stack,"",@progbits
Osaisiko joku selventää miksi GCC kääntää koodin ihan erilaiseksi, toinen koodinpätkä on toki kääntäjän tuottamaa itseään varten, mutta koodi on kuitenkin samalle käyttöjärjestelmälle ja arkkitehtuurille? Miksi se on noin erinäköistä? Tarviiko sen olla?
Yksinkertainen juttu varmasti mutta...
3
225
Vastaukset 3
- Turhaako?
Selitä ensin mihin tarvit tällaista tietoa.
- ex--pertti
Yritän opetella Linux Assemblyä ja GCC-kääntäjän toimintaa. Assembly Tutorial on ihan hyvä mutta jos C-kääntäjä ei tuota lähellekään samanlaista koodia niin olisi kiva tietää syy.
- ex--pertti
Vastaan itse itselleni, heh
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s3
Jos jotakuta siis kiinnostaa tietää. GCC kääntää tuosta C-koodista AT&T syntaksia joka on melko erilaista verrattuna Intelin syntaksiin. En tiedä johtuuko siitä mutta GCC kääntäjällä ohjelman koko tulee olemaan 6,4K kun taas esim. NASM kääntää tuosta Intelin syntaksista ohjelman kooksi vain 456 bytesia, eli GCC tekee "samasta" ohjelmasta 14x suuremman.
Onko tuohon mitään sanottavaa?
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Riikka Purra on mukana Suomen huutokauppakeisari -sarjassa
Suomen huutokauppakeisari on tavallisten suomalaisten ohjelma. Sarjan suosiosta kertoo se, että nyt alkaa jo 19. kausi t1341368Paljonko on etäisyytesi kiinnostavaan naiseen km?
Kaipailen tärkeää miestä ja pohdin hänen ajatuksiaan... ❤️971095Kuuleppas
ensimmäiset naissuhteet toimii miehelle eräänlaisena oppikouluna, mutta hän ei välttämättä itse ymmärrä oppineensa mitää2541008On meillä harvinaisen törkeä valtuuston puheenjohtaja
Ja tyhmä! Kannattaisi googlettaa "julkisuuslaki" ja nojata siihen vasta sitten. Samalla voisi googlettaa muiden kuntien75807- 54774
Olet mieleni päällä edelleen, J
En voi sille mitään. Ja olen yrittänyt voida, monen monta kertaa. Miten jäinkin näin kiinni sinuun... 😞35740- 66697
- 47675
- 43651
Mulla ei ole Suomessa enää mitään
4 vuotta joutuu asumaan henkisessä vankilassa. Sitten voi muuttaa takaisin ulkomaille.164620Oletko miettinyt
Mikä minusta tekee sinulle niin erityisen? Onko se samanlaiset lapsuusmaisemat? Työpaikan liian pitkät katseet? Selvittä34618Provider miehistä..
Tietyt miehet puhuvat ilkeästi naisista, jotka haluavat elää miehen tuloilla. Eikö? Mutta miksi tietyt miehet siitä pah194605Mikko Leppilampi loi TTK:ssa ankaran tavan - Jatkaako Veronica Verho haastavaa perinnettä?
Suorien lähetysten juontaminen vaatii rautaista ammattitaitoa ja kovaa työtä. Tanssii Tähtien Kanssa -ohjelmassa on näh30597Miksi älyllinen ponnistelu ei ole kaikille ihanaa?
Auttakaa minua, en ymmärrä. 🥵 Miten on mahdollista, että joku ei pidä pähkäilystä ja älyllisestä ponnistelusta? Minus98535- 201524
- 105483
Oulaisten kaupunki/ Honkamajan kuntolenkit
Mikä ihme riivaa Oulaisten kaupunkia,kun honkamajan kuntopolut jääneet koko kesältä heinät ja pajut niittämättä? Kenelle18472- 34468
Miten tehdään Todellavaikeeta hulluksi?
Tässä on nainen, jolla on korkea vaatimustaso! Todellavaikeeta voisi lukea tämän ja kiehua kateudessaan. 🤭 "[Etunimi91468Sinulle nainen
En ehkä koskaan osannut sanoa tätä oikein. Minun vaikeuteni luottaa liittyi ennen kaikkea menettämisen pelkoon. Siihen59456