Могу ли я использовать регистры в ЦП как «верхнюю часть стека» для стековой машины?

Допустим, я хочу программировать на чистом железе на процессоре ARM, используя подход стековой машины с Forth. Могу ли я использовать регистры процессора в качестве вершины стека, игнорируя их фактическое обычное использование в регистровой машине?

Я хочу имитировать то, что делает машина с двумя стеками, используя аппаратные адреса в качестве стека. Аппаратное обеспечение, которое я ищу для этого, вероятно, Raspberry pi Zero или что-то подобное с лучшей документацией.


person JupiterC    schedule 04.07.2020    source источник
comment
Мне кажется, этот вопрос лучше подходит для другого сайта SE... Возможно, cs.stackexchange.com   -  person spender    schedule 04.07.2020
comment
Да, вы можете сделать это, конечно.   -  person Jester    schedule 04.07.2020
comment
Да, вы можете это сделать. Довольно часто первые несколько элементов стека хранятся в регистрах. Возможно, вы захотите посмотреть на Mecrisp Stellaris реализацию Forth с открытым исходным кодом для ARM, которая делает именно это (при желании она также выполняет полноценное распределение регистров).   -  person fuz    schedule 04.07.2020
comment
@spender Не совсем так. Информатика больше подходит для теоретических вопросов информатики.   -  person fuz    schedule 04.07.2020
comment
Вы имеете в виду сохранить указатель в регистре? Или сохранить фактические данные в регистре вместо того, чтобы вставлять их, а затем, возможно, выталкивать их для следующей операции? Да, вы тоже можете это сделать, например. Являются ли это наименьшими возможными макросами x86 для этих операций со стеком? речь идет о простом создании кода с фиксированными блоками, за исключением того, что он может оптимизировать толчок / поп через пару блоков.   -  person Peter Cordes    schedule 05.07.2020
comment
baremetal не означает, что вы можете использовать язык ассемблера C или любой другой, если хотите. И поскольку вы можете реализовать это на языке высокого уровня, используя переменные, то, естественно, вы можете использовать gpr.   -  person old_timer    schedule 05.07.2020
comment
Высококлассный компилятор определенно сделал бы такую ​​​​оптимизацию. Однако, если вы просто хотите написать компилятор, я бы определенно сохранил стек в памяти. это НАМНОГО проще   -  person Martin Rosenau    schedule 06.07.2020