Начальная сборка - PullRequest
       8

Начальная сборка

0 голосов
/ 16 марта 2012

У меня проблемы с пониманием начала сборки.Я должен писать программу, которая добавляет два или вычитает два числа, которые являются аргументами командной строки.

Проблема возникает, когда я вызываю подпрограмму.Кажется, это меняет мой стек без взаимодействия с push / pop.По сути, если я POP отключаю мой +/- перед любым вызовом подпрограммы, я могу проверить, является ли это плюсом или минусом, но после вызова подпрограммы тот же POP больше не предоставит мне +/-.Является ли это нормальным поведением или должен при вызове RET мой стек быть таким, каким он был до оператора CALL?

1 Ответ

2 голосов
/ 16 марта 2012

Что касается статуса стека после возврата из вызова подпрограммы, то это зависит от используемого соглашения о вызовах. До тех пор, пока вызывающая и вызываемая стороны договариваются о том, как будет использоваться стек, все хорошо - и если вы напишите оба, вы можете использовать любое соглашение, которое захотите. Если одна из сторон написана кем-то другим, вам нужно выяснить, какое соглашение использовалось, и придерживаться его.

...