Jump to content
dany_love

Sugestie limbaj programare.

Recommended Posts

On: Din propria experienta iti sugerez sa incerci fiecare din limbajele sugerate de fiecare persoana mai sus. Eu unu asa am facut, am inceput cu html, am incercat si python, si c, si c++, m-am uitat si prin vb, cu toate astea m-am oprit la c++, mi s-a parut cel mai usor de inteles, poate si din cauza ca a fost primul limbaj la care am urmarit si un tutorial video, nu doar citit.

Off@ tex

E cu smecherie treaba, nu stim noi "dastea". Un fel de
http://3169868013/

What kind of sorcery is this?

Link to comment
Share on other sites

@dany: Deci, ce limbaj ai ales? :)

nytro mam uitat peste toate..sin din toate python si visual basic mi s-au parut cele mai usore..

adica in visual basic....apezi cateva butoane..pui un header..un button 1 button 2..si gata...ai facut un calculator...sau un autocliker..(ma refer ca poti observa ca se contureaza ceva)

in python..linia de comanda mi se pare simpla......print hello world........print ........................

hello world

................

in c++ trebuie sa bagi comenzi nu gluma

#include <stdio.h>

main() {

printf("Hello, world\n");

return 0;

}

chiar nu stiu ce sa zic..sincer..

Link to comment
Share on other sites

in c++ trebuie sa bagi comenzi nu gluma

#include <stdio.h>

main() {

printf("Hello, world\n");

return 0;

}

chiar nu stiu ce sa zic..sincer..

In C/C++ chemi doar o functie print cu un exit status

Poftim ti-am tradus codul in assembly AT&T Syntax pentru procesoarele Intel 32 biti

Rezultatul este echivalent cu ceea ce ai scris in C/C++ mai sus sau cu "print hello world" in python doar ca ii spun direct procesorului ce sa faca.


#Declar o sectiune .data pentru a stoca date
.data
#Declar un handler HAND care va detine datele pe care le voi procesa
HAND:
#Declar tipul de date .ascii
.ascii"Hello World\n"

#Declar o sectiune .text care va detine instructiile necesare
#pentru a processa datele din sectiunea data
.text

#Declar o sectiune .globl unde voi chema functii/librarii externe
#pentru a procesa datele din sectiunea .data
.globl _start

#De la sectiunea _start: incep sa execut instructiile
_start:
movl $4, %eax #chem in registrul eax functia write (syscall)
movl $1, %ebx #specific in registrul ebx parametrul functiei (standard output)
movl $HAND, %ecx #chem in registrul ecx adresa in memorie a datelor declarate in HAND
movl $12, %edx #mut in registrul edx lungimea caracterelor din HAND

#cu urmatoare instructie ii dau un ordin procesorului sa renunte la ceea ce face si sa faca ceea
#ce este pus in registrul eax si anume valoarea 4 care corespunde la (write syscall) care nu face
#altceva decat sa stampeze pe ecran datele care se gasesc la adresa din registrul ecx.
#in sistemele Linux semnalul va fi trimis la CPU de catre Kernel
int $0x80

#Ies din program
movl $1, %eax #chem in registrul eax functia exit (syscall)
movl $0, %ebx #chem in registrul ebx parametrul functiei care de fapt este un exit status 0
# ii dau un ordin procesorului sa execute ceea ce vede in eax acum si anume functia exit
int $0x80

Edited by pyth0n3
Link to comment
Share on other sites

In C/C++ chemi doar o functie print cu un exit status

Poftim ti-am tradus codul in assembly AT&T Syntax pentru procesoarele Intel 32 biti

Rezultatul este echivalent cu ceea ce ai scris in C/C++ mai sus sau cu "print hello world" in python doar ca ii spun direct procesorului ce sa faca.


#Declar o sectiune .data pentru a stoca date
.data
#Declar un handler HAND care va detine datele pe care le voi procesa
HAND:
#Declar tipul de date .ascii
.ascii"Hello World\n"

#Declar o sectiune .text care va detine instructiile necesare
#pentru a processa datele din sectiunea data
.text

#Declar o sectiune .globl unde voi chema functii/librarii externe
#pentru a procesa datele din sectiunea .data
.globl _start

#De la sectiunea _start: incep sa execut instructiile
_start:
movl $4, %eax #chem in registrul eax functia write (syscall)
movl $1, %ebx #specific in registrul ebx parametrul functiei (standard output)
movl $HAND, %ecx #chem in registrul ecx adresa in memorie a datelor declarate in HAND
movl $12, %edx #mut in registrul edx lungimea caracterelor din HAND

#cu urmatoare instructie ii dau un ordin procesorului sa renunte la ceea ce face si sa faca ceea
#ce este pus in registrul eax si anume valoarea 4 care corespunde la (write syscall) care nu face
#altceva decat sa stampeze pe ecran datele care se gasesc la adresa din registrul ecx.
#in sistemele Linux semnalul va fi trimis la CPU de catre Kernel
int $0x80

#Ies din program
movl $1, %eax #chem in registrul eax functia exit (syscall)
movl $0, %ebx #chem in registrul ebx parametrul functiei care de fapt este un exit status 0
# ii dau un ordin procesorului sa execute ceea ce vede in eax acum si anume functia exit
int $0x80

Si uite asa am mai invatat cate ceva despre syscalls in Linux.

Destul de interesant sa cunosti cum se lucreaza sub capota. Mai multe detalii (pe i86) la adresa urmatoare

http://tldp.org/LDP/khg/HyperNews/get/syscall/syscall86.html

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...