Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-08-2004, 20:34   #1
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Uso dello stack in asm x86

Codice:
 
; Source name : CHARSIN.ASM
; Executable name : CHARSIN
; Version : 1.0
; Created date : 11/21/1999
; Last update : 11/30/1999
; Author : Jeff Duntemann
; Description : A data input demo for Linux, using NASM 0.98
;
; Build using these commands:
; nasm -f elf charsin.asm
; gcc charsin.o -o charsin
;
[SECTION .text] ; Section containing code
extern stdin ; Standard file variable for input
extern fgets
extern printf
extern scanf
global main ; Required so linker can find entry point
main:
push ebp ; Set up stack frame for debugger
mov ebp,esp
push ebx ; Program must preserve ebp, ebx, esi, & edi
push esi
push edi
;;; Everything before this is boilerplate; use it for all ordinary apps!
;; First, an example of safely limited string input using fgets. Unlike
;; gets, which does not allow limiting the number of chars entered, fgets
;; lets you specify a maximum number. However, you must also specify a
;; file (hence the 'f' in 'fgets') so we must push the stdin handle.
push dword sprompt ; Push address of the string input prompt string
call printf ; Display it
add esp,4 ; Clean up stack for 1 arg
push dword [stdin] ; Push predefined file handle for standard input
push dword 72 ; Accept no more than 72 characters from keybd.
push dword instring ; Push address of buffer for entered characters
call fgets ; Call fgets
add esp,12 ; 3 args X 4 bytes = 12 for stack cleanup
push dword instring ; Push address of entered string data buffer
push dwrod sshow ; Push address of the string display prompt
call printf ; Call printf
add esp,8 ; Clean up the stack
;; Next, we'll use scanf to enter numeric data. This is easier, because
;; unlike strings, integers can only be so big and hence are self-
;; limiting.
push dword iprompt ; Push address of the integer input prompt
call printf ; Display it
add esp,4 ; Clean up the stack
push dword intval ; Push the address of the integer buffer
push dword iformat ; Push the address of the integer format string
call scanf ; Call scanf to enter numeric data
add esp,8 ; Clean up the stack
push dword [intval] ; Push integer value to display
push dword ishow ; Push base string
call printf ; Call printf to convert & display the integer
add esp,8 ; Clean up the stack
;;; Everything after this is boilerplate; use it for all ordinary apps!
pop edi ; Restore saved registers
pop esi
pop ebx
mov esp,ebp ; Destroy stack frame before returning
pop ebp
ret ; Return control to Linux
[SECTION .data] ; Section containing initialized data
sprompt db 'Enter string data, followed by Enter: ',0
iprompt db 'Enter an integer value, followed by Enter: ',0
iformat db '%d',0
sshow db 'The string you entered was: %s',10,0
ishow db 'The integer value you entered was: %5d',10,0
[SECTION .bss] ; Section containing uninitialized data
intval resd 1 ; Reserve one uninitialized double word
instring resb 128 ; Reserve 128 bytes for string entry buffer
In base a sto code io capisco come usare lo stack x le funz del c........ma per le mie proc come faccio???
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2004, 01:26   #2
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Che roba è la tua proc?

Comunque ti consiglio bene o male di seguire sempre la calling convention del C , che è quella standard sotto linux .

In particolare sotto un sistema UNIX quando crei una tua funzione devi fare in modo che questa salvi i valori di EBX, ESI, EDI, EBP, ESP nello stack , perchè questi registri devono rimanere inalterati per convenzione (quindi se vuoi usare questi registri nel corpo della funzione devi salvarli nello stack per non perderne il contenuto ) e poi prima del "ret" li "poppi" di nuovo . Poi le convenzioni C prevedono altre cose , come valore di ritorno in EAX e altre robe del genere, comunque è tutto spiegato nel libro che stai seguendo .

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2004, 07:55   #3
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Quote:
Originariamente inviato da AnonimoVeneziano
Che roba è la tua proc?
Una procedura scritta da me
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2004, 20:54   #4
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Re: Uso dello stack in asm x86


Ultima modifica di repne scasb : 03-02-2005 alle 15:19.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2004, 22:32   #5
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
spiegati un attimo meglio che mi interessa assai
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2004, 08:30   #6
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:19.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2004, 08:37   #7
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Quote:
Esercizio per il volenteroso Luc@s:

Riscrivere il codice piu' sopra leggibile, in modo che: i 3 parametri di ritorno non sovrascrivano i 3 valori passati dall procedura padre (hai la piu' completa liberta' d'azione).
Ci penso e poi ti posto la mia soluzione.
Stamani non posso lavorare, devo fare i compiti(la scuola inizia l'8 per me), indi te la mandero oggi pome

P.S: tnk per l'attenzione che mi dai
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2004, 11:56   #8
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Codice:
;	Procedura padre

	mov	edi,MyStack
	mov	[edi],Val1 ; 0h
	add	edi,4h
	mov	[edi],Val2 ; 4h
	add	edi,4h
	mov	[edi],Val3 ; 8h
	call	MyProc
	...
           ; lavoro con eax, ebx e ecx modificati dalla funz e poi li ripristino

	pop eax
	pop ebx
	pop ecx
	...
	...

;	Procedura figlia (MyProc)

	mov	eax,[edi]
	mov	ebx,[edi-4h]
	mov	ecx,[edi-8h]
	push eax
	push ebx
	push ecx

;	Il codice della routine MyProc

	...
	...

;	Ritorni 3 valori alla routine padre
	mov	[edi],eax
	mov	[edi-4h],ebx
	mov	[edi-8h],ecx
	ret
Cosi non ha molto senso vero?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2004, 15:10   #9
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:18.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Yakuza Kiwami 3: il nuovo trailer mostra...
Geely lo fa davvero: auto con garanzia a...
'Troppi videogiochi': ecco perché...
Videogiochi e TV aumentano la concentraz...
OneXFly Apex è la console portati...
Dati impressionanti: le auto autonome di...
Il folle esperimento: 12 modem 56K uniti...
Philips Sonicare 3100 in super offerta s...
Auto elettriche: dalla Cina il prototipo...
Più di 2.000 operai cinesi e fond...
ECOVACS DEEBOT T50 MAX PRO OMNI scende d...
La Cina è 'nanosecondi dietro' ag...
Scontro tra robot low-cost: Eureka NERE1...
Dreame L40 Ultra AE crolla di prezzo su ...
Russia, roadmap fino al 2037 per sistemi...
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: 10:19.


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