nedo Posted June 23, 2012 Report Posted June 23, 2012 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@ texE cu smecherie treaba, nu stim noi "dastea". Un fel de http://3169868013/What kind of sorcery is this? Quote
Nytro Posted June 23, 2012 Report Posted June 23, 2012 @nedo: O adresa IPv4 are 4 bytes. Adresa IP RST este: 188.240.88.237In hexazecimal, fiecare byte: 0xBC = 188, 0xF0 = 240, 0x58 = 88, 0xED = 237 => http://0xBCF058EDDaca compunem un singur "int" de 4 bytes, din aceste numere, adica 0xBCF058ED, in zecimal este 3169868013.@dany: Deci, ce limbaj ai ales? Quote
dany_love Posted June 23, 2012 Author Report Posted June 23, 2012 @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.. Quote
pyth0n3 Posted June 23, 2012 Report Posted June 23, 2012 (edited) 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 June 23, 2012 by pyth0n3 Quote
Flubber Posted June 25, 2012 Report Posted June 25, 2012 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 $0x80Si 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 urmatoarehttp://tldp.org/LDP/khg/HyperNews/get/syscall/syscall86.html Quote