ANElet Inserito: 20 marzo 2017 Segnala Inserito: 20 marzo 2017 buon giorno, qualcuno sa spiegarmi cosa serve questa istruzione scritta in un FB? l'ho trovata in un software che un cliente mi ha passato per fare un lavoro, siccome non sono molto ferrato sul discorso registri indirizzi volevo sapere se qualcuno poteva aiutarmi. LAR1 P#DIX132.0 TAR2 // MULTIINSTANCE CALL OFFSET +AR1 L 0 T D [ AR1 , P#0.0 ] T D [ AR1 , P#4.0 ] grazie anticipatamente
attiliovolpe Inserita: 20 marzo 2017 Segnala Inserita: 20 marzo 2017 Indirizzamento indiretto, LAR1 carica inAR1 il valore del puntatore TAR2 trasferisce il contenuto di AR2 in ACCU1 +AR1 aggiunge il contenuto di ACCU1 ad AR1 e carica il valore in AR1 Per la seconda parte trasferisci i primi 4 bytes del puntatore in AR1 e poi la seconda parte del puntatore, altri 4 bytes in AR1; non ne sono certo ma dovrebbe essere riferito alla data e ora di sistema. Ho provato a spiegare cio che ho capito dovendo interpretare in passato una funzione di inizializzazione simile, attendiamo il parere di chi è più esperto.
ANElet Inserita: 20 marzo 2017 Autore Segnala Inserita: 20 marzo 2017 Grazie per la risposta anche io ho utilizzato in passato l'indirizzamento indiretto di registri utilizzando solo AR1 senza grossi problemi, ma senza mai utilizzare AR2; infatti il mio dubbio si focalizza soprattutto su quel "TAR2" perchè va scritta??? A cosa serve? ho letto su parecchi forum che l'AR2 viene modificato quando sono presenti delle multiistanze nel blocco richiamante (FB) altrimenti di norma viene settato P#0.0 di modo che punti alla prima variabile del blocco dati di istanza Non so se mi sono spiegato bene; in parole povere non capisco l'utilità di dover inserire TAR2 all'interno del codice per poi andarlo a sommare all' AR1. faccio presente che questa istruzione è scritta all'interno di un FB, ed è ripetuta in più segmenti, però l'FB in questione all'interno della sua interfaccia non ha dichiarato nessun'altro blocco dati di istanza per cui secondo me non esiste una multiistanza in questo FB o sbaglio? grazie e spero di non aver creato confusione
0.0 Inserita: 22 marzo 2017 Segnala Inserita: 22 marzo 2017 TAR2 // MULTIINSTANCE CALL OFFSET +AR1 Carica il puntatore AR2 nell'accumulatore 1, +AR1 somma l'accumulatore 1 ad AR1. Quindi viene sommato AR2 ad AR1. Perchè venga fatto dipende dal programma.
attiliovolpe Inserita: 22 marzo 2017 Segnala Inserita: 22 marzo 2017 Quote Carica il puntatore AR2 nell'accumulatore 1 Ok ma quale puntatore, visto che non c'è indirizzamento? Quote LAR1 P#DIX132.0 Mi spiego meglio, questa istruzione carica il puntatore in AR1 "P#DIX132.0", in AR2 in questo caso è stato caricato in precedenza o a quale puntatore fa riferimento? L 0 T D [ AR1 , P#0.0 ] T D [ AR1 , P#4.0 ] Queste istruzioni sono riferite alla data di sistema?
DesmoGiec Inserita: 22 marzo 2017 Segnala Inserita: 22 marzo 2017 Se vuoi sapere la funzione dell'operatore, già ti è stata spiegata. Se vuoi sapere come funziona, credo sarebbe opportuno mettere il codice rimanente. La sola porzione non dice nulla
attiliovolpe Inserita: 22 marzo 2017 Segnala Inserita: 22 marzo 2017 E' tutto riferito al codice riportato sopra nel primo messaggio. LAR1 P#DIX132.0 TAR2 // MULTIINSTANCE CALL OFFSET +AR1 L 0 T D [ AR1 , P#0.0 ] T D [ AR1 , P#4.0 ] @0.0 ha scritto: Quote Carica il puntatore AR2 nell'accumulatore 1 Vorrei capire in questo caso è stato definito in precedenza quale puntatore in AR2 o quale puntatore viene caricato in AR2?
DesmoGiec Inserita: 22 marzo 2017 Segnala Inserita: 22 marzo 2017 @attiliovolpe mi riferivo ad ANElet! Proprio perchè il codice non è completo noi non possiamo arrivare a conclusioni! :-D
attiliovolpe Inserita: 22 marzo 2017 Segnala Inserita: 22 marzo 2017 @ANElet potresti postare qualche altro riferimento per la parte di codice che hai postato? Magari puoi postare l'intera FB e capiamo cosa fa
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora