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
228
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
- 65978
- 69732
Viesti sinulle
Tiedät että tunteet ja ajatukset ja meillä on vahva yhteys mistä molemmat tiedetään. Odotan sinua ☀️40676- 138662
Miksi meille jäi
Niin huonot välit vaikka meistä kumpikaan ei ole tunteilleen mitään voinut. Ehkä se kohtalo on sitä mieltä ettei kuitenk37635- 69626
SAHIMÄKI LOPETA
Miksi käyt Tupamäen Pekan kimppuun.?? Hänen asia mitä hän tekee tiloillaan. Oletko omista POTKUISTASI yhä katkera turve44606- 43560
Rakas, rakkaampi, rakkain
Olen tullut siihen johtopäätökseen, ettei minun kannata rakastaa. Kaikki joita olen koskaan rakastanut vain kohtelevat m112525Haluan purkaa vielä tuntemuksia
Tykkään sinusta kovin paljon❤️ olen surullinen tilanteestasi ja siitä mitä me olemme yhdessä joutuneet kokemaan. Tämä ei19510Tunteiden käsittely kertoo ihmisestä.
Kun puhutaan "tavallisesta" ihmisestä, joka on suht tasapainoinen eläjä, niin puhutaan oikeastaan taitavasta tunteiden k177497Ketä ajattelen
kun mietin, mitä sinulle kuuluu? En tunne sinua oikeasti, ja se on ehkä hyvä, koska jos tietäisin enemmän, se varmaan v18461Mitä sinulle on tapahtunut lapsena
Kun olet noin sairas päästäsi? Pikkupojalle ( Miehen kehossa)38408Pilkettä sunnuntain silmässä
😉 Jos tästä ketjusta löytyisi yksi ihminen, joka saisi sut hymyilemään tänään… Millainen hän olisi? Ei tarvitse kerto62396- 52383
- 17382
- 42378
Työttömän miehen ihmisarvo
..parisuhdemarkkinoilla on olematon. Työtön mies on naisille ihmisjätettä, varsinkin jos sattuu olemaan vielä kunnolline96353Kuhmolaiset valittaa kaikesta
Ootte te kyllä yksiä sanonko mitä... Kaikesta uudesta ja kaupunkia kehittävästå löytyy aina muutama vinkuja kun ei mene9348YLINEN pilaa Ähtärin mahdollisuudet.
Vuodeosastopäätös jossa Nina Ylinen (sdp) äänesti niiden lopettamisen puolesta, hoitajille potkut ja silti arviointimene22348