Thread View: pl.comp.lang.asm
2 messages
2 total messages
Started by Tomasz Pieciak
Sun, 13 May 2007 09:03
[Linux] Problem ze stostem
Author: Tomasz Pieciak
Date: Sun, 13 May 2007 09:03
Date: Sun, 13 May 2007 09:03
78 lines
2567 bytes
2567 bytes
Dzień dobry
Mam problem ze stosem podczas używania GNU Asemblera w Linuksie.
Gdy szkielet mojego programu wygląda tak:
----------------------------
# dane
.text
.global _start
_start:
# kod
----------------------------
argumenty na stosie są następujące:
----------------------------
ARGN
...
ARG2
ARG1 <- pierwszy argument programu
ARGC <- rejestr ESP - ilość argumentów
.
.
0 <- address zerowy
----------------------------
zaś... kiedy zamienię etykietę '.global _start' na ' .globl mojanazwa'
----------------------------
# dane
.text
.globl mojanazwa
mojanazwa:
# kod
----------------------------
Pojawia się pewien problem - argumenty programu wrzucone na stos
wyglądają następująco:
----------------------------
ARGN
...
ARG2
ARG1 <- pierwszy argument programu
ARGC <- ilość argumentów
.
. <- zmienna ilość elementów
.
DANE <- rejestr ESP
.
.
0 <- address zerowy
----------------------------
Między elementem 'DANE', a 'ARGC' jest zmienna ilość elementów. Czasami
jest to 84 bajty (21 elementów), czasami 116 bajtów (29 elementów) -
różnie na różnych dystrybucjach systemu Linux.
Moje pytanie jest następujące:
Czy ta zmienna ilość elementów jest przez cokolwiek uwarunkowana ? Co
jest wrzucane na stos w chwili wywołania programu przed ARGC ? Czy to
jest zależne od linkera, kompilatora, jądra ?
--
Tomasz Pięciak
Re: [Linux] Problem ze stostem
Author: Bernard
Date: Sun, 13 May 2007 09:09
Date: Sun, 13 May 2007 09:09
21 lines
1592 bytes
1592 bytes
Tomasz Pieciak wrote: > Dzień dobry > > > Mam problem ze stosem podczas używania GNU Asemblera w Linuksie. A my mamy zgadnąć, jak wywołujesz asembler i konsolidator, tak? > zaś... kiedy zamienię etykietę '.global _start' na ' .globl mojanazwa' To konsolidator zapewne nie wie, od jakiego adresu zaczyna się program, i dolinkowuje _start z CRT0. Oczywiście strzelam na ślepo, bo szklanej kuli nie dowieźli. > Moje pytanie jest następujące: > Czy ta zmienna ilość elementów jest przez cokolwiek uwarunkowana ? Co > jest wrzucane na stos w chwili wywołania programu przed ARGC ? Czy to > jest zależne od linkera, kompilatora, jądra ? To zależy, co rozumiesz pod pojęciem "program", bo zgaduję, że to właśnie tu leży problem.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads