|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
NASM non conosce il registro IP??? O_o
scusate, sono assai niubbone col NASM; ho scritto un codice semplicissimo:
Codice:
[bits 16] call cs:ip ma mi sbaglio io o sugli x86 l'instruction pointer si chiama IP??? O_o |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ho anche provato con le parentesi quadre in questi due modi:
Codice:
call cs:[ip] Codice:
call [cs:ip] |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sinceramente non ho mai visto un accesso diretto di questo tipo ad IP... Poi che senso ha se sei già nel CS ? Se non sei nel CS, ha già più senso...
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
no dai cavolo, deve essere possibile accedere all'instruction pointer... l'intenzione era proprio quella di chiamare l'istruzione corrente al solo fine di mettere nello stack cs ed ip; ad essere precisi non so bene se quel codice chiama se stesso o l'istruzione successiva... non so se IP punta all'istruzione corrente o alla prossima, comunque si trattava solo di una prova. come mi spieghi che non mi funziona nemmeno questo codice?
Codice:
[bits 16] mov ax,ip |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
hmmm, forse però ripensandoci l'accesso al registro (e)ip non è proprio possibile... mi sembra strano ma in effetti potrebbe essere così...
in tal caso penso che risolverò così: Codice:
[bits 16] call here here: pop ax pop dx |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Sui nostri fornelletti non si può accedere a ip come un registro normale. Altre architetture (ad es. gli ARM) non hanno questa limitazione.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
int int3 into iret jcc (take) loop loope (take) loopne (take) +le eccezioni. Tali istruzioni permetto di modificare E(IP) aldila' della distanza dell'opcode stesso. Nel caso si voglia conoscere il contenuto del registro IP il codice classico (16-bit) e' il seguente: Codice:
call $+3 pop ax sub ax,3h |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Sai anche qualcosa sulla portabilità di questa funzione? Voglio dire, è rimasta inalterata dal 386 al P4 (e magari introdotta anche sugli AMD/Cyrix/Trasmeta ecc.)? Essendo "non documentata", potrebbe sparire o cambiare senza preavviso...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#10 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
0Fh,7h (PM) - Esiste dalla CPU 80386 in poi. Sulla portabilita' di tale istruzione ti posso dire che ancora oggi Windows XP quando apre una sessione del Prompt del Comandi in Virtual8086 lascia un buco di 102 bytes all'indirizzo 80:0. In piu' LOADALL386(0Fh,7h) e' utilizzata sicuramente dal sistema operativo OS/2, e anche dal BIOS Award Medallion 6.0 (disassemblato personalmente). 0Fh,5h e' utilizzata da Windows e ancora oggi se ne trova traccia in Kernel32.dll di WindowsXP. LOADALL e' un istruzione assai "potente" che riporta 102 byte di informazioni sullo stato del processore (286) e fino a 204 byte nel caso 386. |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
repne scasb (ti adoro.....) sei....... sei spettacolare. E' un piacere leggerti ciao da okay |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:17.



















