avva: (Default)
[personal profile] avva
(эта запись будет интересна программистам, знающим C, и сочувствующим)

Две задачки - первая старая и известная, вторую только что придумал.

1. Напишите код на C, который определяет, в какую сторону растет стек на машине, где его запустили - вверх или вниз.

2. Напишите код на C, который проверяет, кто очищает стек от аргументов в конце работы функции - сама функция или тот, кто ее вызывает, после ее возвращения.

Обратите внимание, что обе задачи можно решить многими способами; интересней придумать решения, которые делают - по возможности, т.к. совсем без этого не обойтись - меньше предположений о том, как ведут себя компилятор и железо.

Комментарии скрывать не буду. Очень рекомендую подумать самому перед тем, как смотреть на решения там.

Date: 2009-09-17 10:56 am (UTC)
From: [identity profile] mgar.livejournal.com
Тоже, кстати, не 100% сработает. Чистить может и вызывающая функция, но чистить в конце, за все вызовы сразу...

Date: 2009-09-17 11:02 am (UTC)
From: [identity profile] avva.livejournal.com
Резонное замечание, но на это господин дракон велел заметить, что мы обернем вызов в условие, которое всегда будет верно, но компилятор не сможет это знать, и потому не сможет рискнуть в разных случаях оказаться с разным стеком в продолжении функции.

:)

Date: 2009-09-17 11:04 am (UTC)
From: [identity profile] mgar.livejournal.com
Отлично.
Шана това.

Re: :)

Date: 2009-09-17 11:05 am (UTC)
From: [identity profile] avva.livejournal.com
И вам того же :)

January 2026

S M T W T F S
    1 2 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 5th, 2026 12:18 pm
Powered by Dreamwidth Studios