View Full Version : Programmare in C nel 2002
Conviene, ora che siamo nel 2002, programmare in C o è meglio passare a C++??????
A me le funzioni piacciono .....potro usarle ancora per un po?
Pakoprog
01-11-2002, 18:59
Ciao,bella domanda la tua??
Anke io sono un programmatore c++,linguaggio ke considero potentissimo.
Penso ke il sistema operativo con questo linguaggio è stato creato.
Per nn rimanere indietro nell'informatica anke io sto cerkando di conoscere la programmazione web è ti dico ke è molto piu semplice e ti da piu possibilita per un futuro o immediato lavoro.
nn hai risposto alla mia domanda cmq:confused:
perchè dovrebbero rimuoverle?
il C++ perderebbe flessibilità, pensiero peronale:)
io molte volte rinuncio alle comodità del C++, sono nato sul buon vecchio "C":)
Originariamente inviato da misterx
[B]perchè dovrebbero rimuoverle?
il C++ perderebbe flessibilità, pensiero peronale:)
io molte volte rinuncio alle comodità del C++, sono nato sul buon vecchio "C":) quindi dici che il C nn tramontera tanto facilmente?
penso proprio di no!
tutto il vecchio codice che c'è in giro è ancora molto utile:)
Originariamente inviato da misterx
[B]penso proprio di no!
tutto il vecchio codice che c'è in giro è ancora molto utile:)
Ok!
Ora ho Borland C++ Builder Enterprise 6 e pensavo si usare C/C++ e ASM con la lora funz
asm
{
// codice
}
Che ne dici????
per ora non ho mai usato codice assembler nei miei programmi:)
asm {
mov ax, 0x0e07
xor bx, bx
int 0x10
}
però mi hai incuriosito
:D
Originariamente inviato da misterx
[B]
asm {
mov ax, 0x0e07
xor bx, bx
int 0x10
}
a che serve sto cod?????
a far produrre un BEEP al tuo PC; prova a compilarlo, non sei curioso:)
Originariamente inviato da misterx
[B]a far produrre un BEEP al tuo PC; prova a compilarlo, non sei curioso:)
mo provo, tnk!
Il C non morirà mai visto che è ancora più veloce di qualsiasi linguaggio OO...
Il fatto è che se vuoi fare qualcosa il più possibile a basso livello il C è ancora la scelta migliore...
Pensa che in tutti i kernel Unix e Linux non c'è una riga di C++, ma è tutto C con assembler inline o con modulo...
Originariamente inviato da cionci
[B]Il C non morirà mai visto che è ancora più veloce di qualsiasi linguaggio OO...
Il fatto è che se vuoi fare qualcosa il più possibile a basso livello il C è ancora la scelta migliore...
Pensa che in tutti i kernel Unix e Linux non c'è una riga di C++, ma è tutto C++ con assemblere inline o con modulo...
Davvero il kernel linux è solo C???????
[ot]
Posso darti na domanda sull'assembler?
[OT]Ok...spero di saper rispondere ;)
Questo cod, che sippongo essere asm x86.........
;(Hello Word) - by b0nuS 1997
.MODEL small ; indica al compilatore il modello di memoria da usare
.STACK 100h ; dimensiona lo Stack
.DATA ; inizio del segmento dati
Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
.CODE ; inizio del segmento di codice
inizio: ;etichetta che segna l'inizio del programma (entry point)
mov ax,SEG Messaggio
mov ds,ax
mov dx,OFFSET Messaggio
mov ah,09h
int 21h
mov ah,4Ch
int 21h
END inizio
come funge???????
;(Hello Word) - by b0nuS 1997
.MODEL small ; indica al compilatore il modello di memoria da usare
.STACK 100h ; dimensiona lo Stack
.DATA ; inizio del segmento dati
Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
.CODE ; inizio del segmento di codice
inizio: ;etichetta che segna l'inizio del programma (entry point)
mov ax,SEG Messaggio ;sposta nel registro AX il valore del segmento del messaggio
mov ds,ax ;inizializza DS (Data Segment) per usare il contenuto di AX come segmento dati di default
mov dx,OFFSET Messaggio ;mette in DX l'offset del messaggio
mov ah,09h ;mette in AX 0x09
int 21h ;chiama la routine di interruzione 0x21 (output del emssaggio sullo schermo)
mov ah,4Ch ;mette in AH 0x4C
int 21h ;chiama l'interruzione 0x21...serve per terminare il programma e tornare all'interprete dei programmi
END inizio
Questo è codice x86 a 16 bit...
Comunque non puoi partire da un codice per imparare l'assembler...devi prima impararti l'architettura dei microprocessori x86...
Originariamente inviato da cionci
[b]
;(Hello Word) - by b0nuS 1997
.MODEL small ; indica al compilatore il modello di memoria da usare
.STACK 100h ; dimensiona lo Stack
.DATA ; inizio del segmento dati
Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
.CODE ; inizio del segmento di codice
inizio: ;etichetta che segna l'inizio del programma (entry point)
mov ax,SEG Messaggio ;sposta nel registro AX il valore del segmento del messaggio
mov ds,ax ;inizializza DS (Data Segment) per usare il contenuto di AX come segmento dati di default
mov dx,OFFSET Messaggio ;mette in DX l'offset del messaggio
mov ah,09h ;mette in AX 0x09
int 21h ;chiama la routine di interruzione 0x21 (output del emssaggio sullo schermo)
mov ah,4Ch ;mette in AH 0x4C
int 21h ;chiama l'interruzione 0x21...serve per terminare il programma e tornare all'interprete dei programmi
END inizio
Questo è codice x86 a 16 bit...
Comunque non puoi partire da un codice per imparare l'assembler...devi prima impararti l'architettura dei microprocessori x86...
allora mi imparo il c.....che è meglio:D
sliver80
03-11-2002, 00:16
Originariamente inviato da Luc@s
Questo cod, che sippongo essere asm x86.........
[b]
;(Hello Word) - by b0nuS 1997
.MODEL small ; indica al compilatore il modello di memoria da usare
.STACK 100h ; dimensiona lo Stack
.DATA ; inizio del segmento dati
Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
.CODE ; inizio del segmento di codice
inizio: ;etichetta che segna l'inizio del programma (entry point)
mov ax,SEG Messaggio
mov ds,ax
mov dx,OFFSET Messaggio
mov ah,09h
int 21h
mov ah,4Ch
int 21h
END inizio
come funge???????
per capire un pò di asm ti basta che ti studi l'x86 con i vari registri come ti ha detto cionci (ax, bx,cd, dx, i vari flag ecc ecc) e ti cerchi una bella tabella con l'elenco di tutte le interruzioni (nel tuo caso la 21) con le relative funzioni (l'interrupt 21 fa una certa cosa a seconda di cosa contiene un determinato registro, in questo caso l'ah (parte alta di ax) che ha lo 09).
nel nostro caso specifico l'int 21 con la funzione 09 ha il compito di visualizzare sullo standard output una stringa (che deve terminare col $.
per chiamare:
AH = 09H
DS : DX= segment : offset della stringa da leggere.
ovviamente non lo ricordavo a memoria, ma ho preso il libro di sistemi dei superiori (dove c'è un bell'elenco dei vari interrupt).
ti consiglio cmq di approfondire un pò di asm, io mi "divertivo" tantissimo ad aggingero blocchi asm nel codice pascal o c, anche xè ti permette un'ottima gestione dei dispositivi.
byez
ps: prova l'interruzione 19h, resetta il computer :D
Originariamente inviato da sliver80
[B]
per capire un pò di asm ti basta che ti studi l'x86 con i vari registri come ti ha detto cionci (ax, bx,cd, dx, i vari flag ecc ecc) e ti cerchi una bella tabella con l'elenco di tutte le interruzioni (nel tuo caso la 21) con le relative funzioni (l'interrupt 21 fa una certa cosa a seconda di cosa contiene un determinato registro, in questo caso l'ah (parte alta di ax) che ha lo 09).
nel nostro caso specifico l'int 21 con la funzione 09 ha il compito di visualizzare sullo standard output una stringa (che deve terminare col $.
per chiamare:
AH = 09H
DS : DX= segment : offset della stringa da leggere.
ovviamente non lo ricordavo a memoria, ma ho preso il libro di sistemi dei superiori (dove c'è un bell'elenco dei vari interrupt).
ti consiglio cmq di approfondire un pò di asm, io mi "divertivo" tantissimo ad aggingero blocchi asm nel codice pascal o c, anche xè ti permette un'ottima gestione dei dispositivi.
byez
ps: prova l'interruzione 19h, resetta il computer :D
dove trovo l'elenco di TUTTI i registri ?????
L'elenco dei registri a 32 bit è presto fatto EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI...poi ci sono quelli non accessibili direttamente dall'assembler EIP, EFLAG...
Ci sono anche altri registri a 16 bit, i così detti registri segmento che sono divenuti obsoleti nelal programmazione a 32 bit : CS, DS, ES, SS...
Comuqnue la lista non ti serve a niente...ti serve l'architettura nei processori x86 per capire come e quando devono essere usati quei registri !!!
sliver80
03-11-2002, 11:13
esatto quello che ha detto cionci, l'elenco dei registri non ti serve a nulla.
la cosa migliore è che ti studi prima l'architettura, quel minimo di istruzioni (mov, add, cmp, jmp, non ne servono tantissime) e poi cominci a sperimentare i vari interrupt.
secondo me ne vale la pena ;)
sliver80
03-11-2002, 11:14
.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.