Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-12-2005, 12:37   #1
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
File .obj con Visual C++

Salve a tutti

in un progetto che sto portando avanti per la tesi di laurea, ho bisogno di utilizzare delle routines per pilotare una vecchia scheda DSP (Dalanco Spry Model 250 ISA, basata su DSP TMS320C25, qualcuno la conosce?)

Queste routines sono presenti, come file forniti con la scheda, sottoforma di file.ASM (asselmber), oppure come file .obj.

Come faccio " a dire" al compilatore di visual c++ che le funzioni sono definite nei file .obj?

Ovviamente se le aggiungo al progetto in corso, allega i file sotto la voce risorse.

Help!
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:54   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
boh, prova a linkarlo con pragma comment
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 14:04   #3
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da 71104
boh, prova a linkarlo con pragma comment
ops, scusa l'ignoranza.....

cos'è pragma comment?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 17:50   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
non hai mai linkato un lib in un tuo programma? non hai presente quando fai
Codice:
#pragma comment(lib, "nomefile")
?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 22:18   #5
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da 71104
non hai mai linkato un lib in un tuo programma? non hai presente quando fai
Codice:
#pragma comment(lib, "nomefile")
?
hai ragione, forse ho dato l'impressione di essere un veterano della programmazione....

in effetti però smanetto col vc++ da quasi un mese....

scusa, ma facendo così includo automaticamente il file obj, con tutte le funzioni incluse?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 22:32   #6
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
scusate ma perchè non gli spiegate il modo più semplice?

invece di usare i pragma comment vai nel menù

Project/Add to Project/Files...

e scegli il file .obj

in questo modo,quando compili, il linker troverà le funzioni nel file .obj che sono dichiarate nel file header associato al file obj

EDIT : questo funziona di sicuro con i file LIB,non ho mai provato con gli OBJ,ma suppongo funzi
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 22:42   #7
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da swarm
hai ragione, forse ho dato l'impressione di essere un veterano della programmazione....

in effetti però smanetto col vc++ da quasi un mese....

scusa, ma facendo così includo automaticamente il file obj, con tutte le funzioni incluse?
scusa,forse non sai che nel file obj ci sono le DEFINIZIONI delle funzioni,ma se includi solo quel file non puoi usare le funzioni,perchè devi averle DICHIARATE nel sorgente che tu scrivi,come in tutti i programmi

deve esserci un file header (.h) da usare insieme al file .obj,e che si chiamerà,suppongo,con lo stesso nome
ecco,allora includi nel progetto anche quel file header dal menù come ho detto sopra,e poi nel file .c del tuo programma usi #include "nomefileheader" per includerlo

quindi riassumendo,includi nel progetto,dal menu,il file .obj e il file .h,poi nel file .c scrivi #include nomedelfileheader , così puoi usare le funzioni

scusa se ti spiego cose che magari già sai,ma mi hai dato l'impressione di non saperle
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2005, 07:14   #8
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da GordonFreeman
scusa,forse non sai che nel file obj ci sono le DEFINIZIONI delle funzioni,ma se includi solo quel file non puoi usare le funzioni,perchè devi averle DICHIARATE nel sorgente che tu scrivi,come in tutti i programmi

deve esserci un file header (.h) da usare insieme al file .obj,e che si chiamerà,suppongo,con lo stesso nome
ecco,allora includi nel progetto anche quel file header dal menù come ho detto sopra,e poi nel file .c del tuo programma usi #include "nomefileheader" per includerlo

quindi riassumendo,includi nel progetto,dal menu,il file .obj e il file .h,poi nel file .c scrivi #include nomedelfileheader , così puoi usare le funzioni

scusa se ti spiego cose che magari già sai,ma mi hai dato l'impressione di non saperle

figurati, hai fatto + che bene a chiarirmi le idee!

il fatto è che per il file che mi interessa ne ho una versione .c e un'altra .obj, me ntre per un altro file (che pure mi serve) ne ho la versione .obj e la versione .asm!

Mi toccherà generare da solo il file header?

il fatto è che su un vecchio compilatore, bastava che ci fosse il file .obj e il gioco era fatto!
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2005, 19:44   #9
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da swarm
figurati, hai fatto + che bene a chiarirmi le idee!

il fatto è che per il file che mi interessa ne ho una versione .c e un'altra .obj, me ntre per un altro file (che pure mi serve) ne ho la versione .obj e la versione .asm!

Mi toccherà generare da solo il file header?

il fatto è che su un vecchio compilatore, bastava che ci fosse il file .obj e il gioco era fatto!
senti,quello che ti serve sono due cose:

le DICHIARAZIONI delle funzioni,cioè i prototipi
le DEFINIZIONI delle funzioni

forse nel file .c che dici,ci sono sia i prototipi che le definizioni delle funzioni,cioè ad esempio

int sum(int i1,int i2);

questo era solo un prototipo della funzione,invece

int sum(int i1,int i2){
return i1+i2;
}

questo era la definizione della funzione,anzi,era prototipo + definizione

se tu hai disponibile solo il prototipo nel file .c o .h...ti serve anche la definizione,devi averla da qualche parte,e se non ce l'hai scritta nel file .c,che va in input al compilatore,devi averla in un file .OBJ oppure .LIB,che è già compilata e va in input al linker

per quanto riguarda il file .ASM,esso contiene i prototipi,ma non per il linguaggio C,ma per il linguaggio assemblatore
nel file .obj ad esso associato,c'è la definizione della funzione,cioè in questo caso la funzione già compilata

se quelle funzioni le vuoi usare dal C,dovresti costruirti da solo il loro prototipo,devi sapere quali sono i suoi parametri,e il tipo di dato di ritorno

e poi linki con il file .obj

suggerimento : prova a capire i prototipi delle funzioni in linguaggio assemblatore,e poi tradurli in C,oppure fattelo fare da qualcuno

uè ma pagami il cinema dopo tutto questo!
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2005, 21:07   #10
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da GordonFreeman
senti,quello che ti serve sono due cose:

le DICHIARAZIONI delle funzioni,cioè i prototipi
le DEFINIZIONI delle funzioni

forse nel file .c che dici,ci sono sia i prototipi che le definizioni delle funzioni,cioè ad esempio

int sum(int i1,int i2);

questo era solo un prototipo della funzione,invece

int sum(int i1,int i2){
return i1+i2;
}

questo era la definizione della funzione,anzi,era prototipo + definizione

se tu hai disponibile solo il prototipo nel file .c o .h...ti serve anche la definizione,devi averla da qualche parte,e se non ce l'hai scritta nel file .c,che va in input al compilatore,devi averla in un file .OBJ oppure .LIB,che è già compilata e va in input al linker

per quanto riguarda il file .ASM,esso contiene i prototipi,ma non per il linguaggio C,ma per il linguaggio assemblatore
nel file .obj ad esso associato,c'è la definizione della funzione,cioè in questo caso la funzione già compilata

se quelle funzioni le vuoi usare dal C,dovresti costruirti da solo il loro prototipo,devi sapere quali sono i suoi parametri,e il tipo di dato di ritorno

e poi linki con il file .obj

suggerimento : prova a capire i prototipi delle funzioni in linguaggio assemblatore,e poi tradurli in C,oppure fattelo fare da qualcuno

uè ma pagami il cinema dopo tutto questo!
quello che scrivi per me è oro colato!

ma purtroppo io credo di essere alle prese con qualcosa di molto + grande di me...

Devo sviluppare un probramma che pilota una vecchia scheda DSP (basata su TMS320C25), con la quale ho avuto anche i suddetti file (.c, .obj e .asm) scritti in Turbo C.

ad esempio, scrivo qui il file che si occupa dell'io (si chiama m250io.c, di questo ho anche il file m250io.obj):

#include <stat.h>
#include <stdio.h>
#include <fcntl.h>
#include <dos.h>
/* io + setupadr routines are for Model 250 */

setupadr(address,Pd,PC12,iobase)
unsigned address,Pd,PC12,iobase;
{
unsigned add,steps,i;
add = address & 0xfffc;
steps = address - add;
add = add | Pd |(PC12<<1);
outport(iobase+2,add);
if (steps != 0)
for(i=0;i<steps;i++)
inport(iobase);
}

recvio(xs, len, adr320, iobase, bankpd, bank12pc)
unsigned xs[],len,adr320,iobase,bankpd,bank12pc;
{
unsigned int i;
setupadr(adr320,bankpd,bank12pc,iobase);
peekio(iobase,xs,len);
}

sendio(xs, len, adr320, iobase, bankpd, bank12pc)
unsigned xs[],len,adr320,iobase,bankpd,bank12pc;
{
unsigned int i;
setupadr(adr320,bankpd,bank12pc,iobase);
pokeio(iobase,xs,len);

}


a parte le funzioni outport e inport (che oggi mi pare siano outpw e inpw nella libreria conio.h), vi sono due funzioni qui nn definite, peekio e pokeio, che credo siano nel file .asm.

ho provato a definire le funzioni che mi servivano nel file header del progetto, e ad allegare i due file obj, ma mi dà molti errori!

me tapino!

grazie per il tuo tempo cmq!
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2005, 22:33   #11
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da swarm
quello che scrivi per me è oro colato!

ma purtroppo io credo di essere alle prese con qualcosa di molto + grande di me...

Devo sviluppare un probramma che pilota una vecchia scheda DSP (basata su TMS320C25), con la quale ho avuto anche i suddetti file (.c, .obj e .asm) scritti in Turbo C.

ad esempio, scrivo qui il file che si occupa dell'io (si chiama m250io.c, di questo ho anche il file m250io.obj):

#include <stat.h>
#include <stdio.h>
#include <fcntl.h>
#include <dos.h>
/* io + setupadr routines are for Model 250 */

setupadr(address,Pd,PC12,iobase)
unsigned address,Pd,PC12,iobase;
{
unsigned add,steps,i;
add = address & 0xfffc;
steps = address - add;
add = add | Pd |(PC12<<1);
outport(iobase+2,add);
if (steps != 0)
for(i=0;i<steps;i++)
inport(iobase);
}

recvio(xs, len, adr320, iobase, bankpd, bank12pc)
unsigned xs[],len,adr320,iobase,bankpd,bank12pc;
{
unsigned int i;
setupadr(adr320,bankpd,bank12pc,iobase);
peekio(iobase,xs,len);
}

sendio(xs, len, adr320, iobase, bankpd, bank12pc)
unsigned xs[],len,adr320,iobase,bankpd,bank12pc;
{
unsigned int i;
setupadr(adr320,bankpd,bank12pc,iobase);
pokeio(iobase,xs,len);

}


a parte le funzioni outport e inport (che oggi mi pare siano outpw e inpw nella libreria conio.h), vi sono due funzioni qui nn definite, peekio e pokeio, che credo siano nel file .asm.

ho provato a definire le funzioni che mi servivano nel file header del progetto, e ad allegare i due file obj, ma mi dà molti errori!

me tapino!

grazie per il tuo tempo cmq!
allora,scusa basta guardare nel codice che hai scritto sopra come vengono usate quelle due funzioni peekio e pokeio

guarda i tipi di parametri che prendono,e poi scrivi il loro prototipo all'inizio del file,ma dopo gli #include

ad esempio pokeio dev'essere così

void pokeio(unsigned,unsigned,unsigned);

bastava guardare come viene usata,infatti le vengono passati 3 unsigned come parametri

oppure il suo valore di ritorno è un int,o un byte...una delle tre deve essere
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2005, 09:54   #12
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
infatti, ma come vedi, mentre per le funzioni recvio e sendvio (e pure go500 e hlt500) ho anche l'implementazione nel file che vedi sopra, per le funzioni peekio e pokeio l'implementazione ce l'ho solo in assembler!

devo imparare anche l'assembler insomma
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2005, 20:29   #13
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da swarm
infatti, ma come vedi, mentre per le funzioni recvio e sendvio (e pure go500 e hlt500) ho anche l'implementazione nel file che vedi sopra, per le funzioni peekio e pokeio l'implementazione ce l'ho solo in assembler!

devo imparare anche l'assembler insomma
ma no!

ti basta IL PROTOTIPO,che devi dedurre come ho detto sopra,guardando come viene usata la funzione nel codice che hai scritto

solo i prototipi devi scrivere

la definizione ce l'hai GIA' COMPILATA nel file .obj associato al file .asm,e quindi devi solo linkare il file .obj,cioè dal menu devi aggiungerlo al progetto come ho detto all'inizio
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2005, 11:48   #14
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
ciao
innanzitutto grazie per il tuo aiuto, i tuoi consigli sono stati preziosi

purtroppo il problema per me nn finisce qui

infatti quando costruisco il programma e il linker va a leggere il file obj corrispettivo di quello asm, mi dice che c'è un errore di questo tipo

"segment reference fixup record"

credo che alcune azioni intraprese da quelle funzioni non siano permesse da Windows.

Secondo uno dei prof con cui lavoro, si dovrebbe scrivere un driver per questa scheda.
A tal proposito h scaricato WinDriver, ma ne sto ancora leggendo il manuale.....

Cmq, se tu (o qualunque anima pia) capisca di assembler, provo a postare il listato del file asm che mi serve

le funzioni di cui ho assoluta necessità sono :
hlt320 , go320 , int320, peekio, pokeio.

grazie
__________________
ho fatto affari con: na decina di anime

Ultima modifica di swarm : 16-12-2005 alle 12:21.
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2005, 11:49   #15
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
.286c
; masm/mx this file
DGROUP GROUP _DATA
ASSUME DSGROUP
_DATA SEGMENT WORD PUBLIC 'DATA'
tutu dw 0
table dw 1024 dup (0)
tabl2 dw 1024 dup (0)
_DATA ENDS

TCL320_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:TCL320_TEXT

public _hlt320,_go320
public _sigpts,_int320,_hres320,_co80320
public _pokeio,_peekio ; Model 250
;
; SET THE COLOR CARD IN HI-RES GRAPHICS MODE : 640 * 200
;
_hres320 PROC FAR ;
PUSH BP ; save frame ptr on stack
MOV BP,SP
MOV AH,0 ; hi-res mode
MOV AL,6
INT 10H ; video int
POP BP ; restore frame ptr
RET ; Return
_hres320 ENDP
;
; SET THE COLOR CARD IN 80 COLUMN TEXT MODE
;
_co80320 PROC FAR ;
PUSH BP ; save frame ptr on stack
MOV BP,SP
MOV AH,0 ; set mode
MOV AL,3 ; color 80 = 3, bw80 = 2
INT 10H ; video int
POP BP ; restore frame ptr
RET ; Return
_co80320 ENDP
;
;
; INTERRUPT THE TMS 320
;
_int320 PROC FAR ; (BASEIO)
PUSH BP ; save frame ptr on stack
MOV BP,SP
MOV DX,[BP+6] ; DX = BASEIO
ADD DX,5 ;
IN AL,DX ; INT 320 command
MOV SP,BP
POP BP ; restore frame ptr
RET ; Return, pop 4 bytes
_int320 ENDP

; START 320
_go320 PROC FAR ; (BASEIO)
PUSH BP ; save frame ptr on stack
MOV BP,SP
MOV DX,[BP+6] ; DX = BASEIO
ADD DX,6 ; offset for GO
IN AL,DX ; GO command
MOV SP,BP
POP BP ; restore frame ptr
RET ; Return, pop 4 bytes
_go320 ENDP

; HALT 320
_hlt320 PROC FAR ; (BASEIO)
PUSH BP ; save frame ptr on stack
MOV BP,SP
MOV DX,[BP+6] ; DX = BASEIO
ADD DX,7 ; offset for HALT
IN AL,DX ; HALT command
MOV SP,BP
POP BP ; restore frame ptr
RET ; Return, pop 4 bytes
_hlt320 ENDP

; for Model 250 ... 286 & up only
_peekio PROC FAR ;(ioaddr,&x[0],len)
PUSH BP
MOV BP,SP
PUSH ES
PUSH DI
MOV DX,[BP+6] ; io address to read from
MOV AX,[BP+10] ; seg addr of dest string
MOV ES,AX ; DEST SEG
MOV DI,[BP+8] ; offset addr of dest str (arg 2)
MOV CX,[BP+12] ; string length (arg 3)
CLD
REP INSW
POP DI
POP ES
POP BP
RET
_peekio ENDP
; for Model 250 ... 286 & up only
_pokeio PROC FAR ;(ioaddr,&x[0],len)
PUSH BP
MOV BP,SP
PUSH DS
PUSH SI
MOV DX,[BP+6] ; io address to read from
MOV AX,[BP+10] ; seg addr of dest string
MOV DS,AX ; DEST SEG
MOV SI,[BP+8] ; offset addr of dest str (arg 2)
MOV CX,[BP+12] ; string length (arg 3)
CLD
REP OUTSW
POP SI
POP DS
POP BP
RET
_pokeio ENDP

; DISPLAY SIGNAL ON COLOR CARD
_sigpts PROC FAR ; (&Y[0],LEN)


PUSH BP ; save frame ptr on stack
MOV BP,SP
PUSH SI
PUSH DI
PUSH DS ; save DS on stack
PUSH ES ; save ES on stack
LDS BX,[BP+6]
MOV CX,[BP+6+4]

; dec cx
mov ax,0b800h
mov es,ax
mov ax,cx
shl ax,1
add bx,ax
siger: mov ax,[bx] ; might have some problems with the ds 's
cmp ax,0 ;added 12/13
mov tutu,0
jge doobee
mov tutu,1
doobee: nop
cmp ax,199
jle doit
mov tutu,1
doit: jmp sigpoint_; call sigpoint_
next:
dec bx
dec bx
loop siger

POP ES ; restore ES
POP DS ; restore DS
POP DI
POP SI
; MOV SP,BP
POP BP ; restore frame ptr
RET ; Return, pop 8 bytes
_sigpts ENDP


sigpoint_:
push di
push si
push bx
push cx
push ax
push cx
push ax
and ax,0feh
sal ax,1
sal ax,1
sal ax,1
mov bx,ax
sal ax,1
sal ax,1
add ax,bx
pop bx
sar bx,1
jnb sigven
add ax,2000h
sigven: sar cx,1
sar cx,1
sar cx,1
add ax,cx
mov si,ax
pop cx
mov bx,cx
shl bx,1 ; tabl2[2x]=old video bit info
push ax ; table[2x]=old video addr
mov ax,tabl2[bx] ; bx has x value * 2
mov di,table[bx]
not al ; eg: change 00100000 to 11011111
and al,es:[di]
mov es:[di],al ; previous value nullified here
pop ax
mov table[bx],ax ; ax has final address
and cx,7h ; bx has x value * 2
mov al,80h
shr al,cl
mov tabl2[bx],ax
cmp tutu,1
jne dubo
mov al,0
dubo: or al,es:[si]
mov es:[si],al
pop ax
pop cx
pop bx
pop si
pop di
jmp next ; ret

TCL320_TEXT ENDS

END
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2005, 21:37   #16
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da swarm
ciao
innanzitutto grazie per il tuo aiuto, i tuoi consigli sono stati preziosi

purtroppo il problema per me nn finisce qui

infatti quando costruisco il programma e il linker va a leggere il file obj corrispettivo di quello asm, mi dice che c'è un errore di questo tipo

"segment reference fixup record"

credo che alcune azioni intraprese da quelle funzioni non siano permesse da Windows.

Secondo uno dei prof con cui lavoro, si dovrebbe scrivere un driver per questa scheda.
A tal proposito h scaricato WinDriver, ma ne sto ancora leggendo il manuale.....

Cmq, se tu (o qualunque anima pia) capisca di assembler, provo a postare il listato del file asm che mi serve

le funzioni di cui ho assoluta necessità sono :
hlt320 , go320 , int320, peekio, pokeio.

grazie
cacchio ma quello è codice a 16 bit per il vecchio DOS,e contiene istruzioni di I/O,mi sa che dal modo utente non si può fare dell'I/O sotto Windows a 32 bit,lo potevi fare sotto DOS...adesso l'I/O si può fare solo in modalità kernel,quindi dovresti scrivere un driver per Windows di quella scheda

fai una prova, nel visual c++ che stai usando definisci le funzioni in questo modo: scrivi un blocco _asm e ci copi e incolli le istruzioni assembler dal file .asm

ad esempio la funzione int320

Codice:
void int320(...non lo so che parametri prende....){

// copio e incollo il codice assembler della funzione,
// dal file .asm a questo file .c,in un blocco __asm

__asm {
 PUSH BP 
 MOV BP,SP 
 MOV DX,[BP+6] 
 ADD DX,5 
 IN AL,DX 
 MOV SP,BP 
 POP BP 
 RET 
}

}
e la funzione int320 la puoi usare perchè è definita nel codice C che ho scritto sopra,però ho paura che Windows si arrabbi e ti mandi un MessageBox con scritto "operazione privilegiata non consentita all'applicazione" o una cosa
del genere
perchè la tua applicazione ovviamente non è un driver,è in modo utente...cmq prova e dimmi
p.s. però ricordati che devi scoprire che parametri prendono le funzioni
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2005, 21:39   #17
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
GordonFreeman, se fai così però devi anche dichiararla come __declspec(naked)...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2005, 21:51   #18
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da 71104
GordonFreeman, se fai così però devi anche dichiararla come __declspec(naked)...
ah non sapevo,ho visto adesso su msdn grazie

comunque da quanto ho capito serve a dire al compilatore di non aggiungere codice macchina all'inizio (prologo) e alla fine (epilogo) della funzione,ma di compilare solo quello che ho scritto io,giusto?
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2005, 22:14   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
giusto
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2005, 11:32   #20
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
raga, io ormai sono sull'orlo della disperazione....

proverò ad eseguire il codice assembler come dite voi, ma il fatto che il tentativo di linkare il file precompilato (.obj) mi dia quell'errore (segment reference in fixup record) non è già un segnale del fatto che windows nn mi farà fare nulla?

ecco perchè stavo provando a scrivere un driver con WinDriver (lo conoscete?), ma anche se dice che sia semplice, non so ancora dove mettere le mani nel codice che lui costruisce (scheletro del driver)

grazie del vostro aiuto....

se potete, non mi abbandonate!
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Lo compri una volta, lo giochi dove vuoi...
Qiantinuum annuncia Helios, "il com...
Samsung Galaxy S26 Ultra: una sola novit...
Google prepara Gemini 3 Pro e Nano Banan...
TVS non è solo moto e scooter: ec...
Alexa+ arriva su BMW: gli automobilisti ...
Gemini Deep Research arriva su Google Fi...
Rinvii a catena, Marvel 1943: Rise of Hy...
Xiaomi inaugura uno spazio dedicato ai f...
Rilasciate le specifiche di Bluetooth 6....
L'obiettivo che mette tutto a fuoco: la ...
Meta avrebbe raccolto fino al 10% dei ri...
NVIDIA DGX Spark e videogiochi? Una pess...
Serie Oppo Reno15 confermata: arriva il ...
UPDF 2025: l'editor PDF che fa (quasi) t...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v