dil

Требуется помощь зала

Nov 21, 2010 22:15


А ни у кого случайно не завалялся programmer’s manual для ST20 C2?

Меня интересуют стандартные соглашения о вызовах и программистская модель процессора. Reference manual с системой команд у меня есть, но соглашений о вызовах там нет, а описание архитектуры очень размазано.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из ( Read more... )

st20, программирование

Leave a comment

sfy_y November 21 2010, 21:35:36 UTC
dil November 21 2010, 21:39:52 UTC
Вот как раз это у меня есть. Но там не написано, как принято передавать аргументы в вызываемые функции, как оттуда возвращать значения, какие регистры надо сохранять перед вызовом самому, какие автоматически восстанавливаются функцией перед возвратом, и всё такое.

Reply

sfy_y November 21 2010, 21:45:55 UTC
Сохраняй все, которые портишь.

А сюда глянь: http://xtin.activebb.net/forum-f1/tema-t38.htm

Reply

dil November 21 2010, 21:55:38 UTC
Я-то, может, и сохраню, а вот что сделают чужие функции - загадка. Гадать на кофейной гуще не хочется, хочется почитать родную документацию, в которой это описано. За ссылочку спасибо, почитаю, но там люди тоже только строят предположения.

Вообще ST20 как-то не сильно похож на RISC, хотя производитель его так называет. Там команды переменной длины, на разрядность слова не завязаны, набор команд потенциально расширяемый, и вдобавок есть не сильно простые команды типа "calculate CRC on word".

Reply

sfy_y November 21 2010, 21:58:43 UTC
Не, ты ссылку-то почитай, а то и туснись там.

Да, не risc, больше похоже на однокристаллку. Нафига она тебе сдалась?

Reply

dil November 21 2010, 22:31:52 UTC
Как и им - кое-что выколупать из прошивки :)

Reply

sfy_y November 21 2010, 22:39:13 UTC
Тю. Если колупаешь прошивку, что за проблема посмотреть на вход и выход процедур? Придумываешь проблемы на ровном месте. :)

Reply

dil November 21 2010, 22:40:33 UTC
Так я ж заранее не знаю, что это за процедуры, сколько и каких параметров им передают, и что они возвращают. Потому и ищу, как это положено делать.

Reply

sfy_y November 21 2010, 22:46:18 UTC
Диля, не включай дурака. Есть три способа:
1 - стек
2 - регистры
3 - статичесике переменные

Чо, не отличишь?

Reply

dil November 21 2010, 23:10:23 UTC
Так вот, если вызывающая процедура где-то перед вызовом затолкала в стек или в регистр значение, то как определить, это она затолкала параметр для вызывваемой или просто какое-то своё значение, которое она потом использует вместе с тем, что вернёт вызываемая процедура?

Reply

sfy_y November 21 2010, 23:14:37 UTC
Никак. Если программер сумашедший, то он может в регистр затолкать (в стек - нет, это надо быть совсем сумасшедшим). Анализируй.

Reply

dil November 21 2010, 23:16:08 UTC
Ну вот я потому и спрашиваю про общепринятые соглашения о вызовах, чтоб хотя бы приблизительно понять, где там что.

Reply

sfy_y November 21 2010, 23:21:56 UTC
Ну, я тебе ссылку дал. Стандартная практика: в регистры, сколько влезет, что не влезло - в стек. Все регистры при выходе восстанавливаем.

Посмотри доку ваткомовского компилятора, например.

Reply


Leave a comment

Up