Вопрос

Я пытаюсь понять старую точку входа в классическом Mac приложения. Я разобрал первый ресурс кода (не код № 0, который является таблицей прыжка). Код относится к некоторым переменным от стека: слово при 0004 (a7), массив длинных слов запуска с 000c (A7), длина которого является значение в 0004 (A7), а также конечное длинное длинное слово, кроме этого массива, что кажется указателем на строку символов.

Массив длинных слов выглядит как строки на первый взгляд, поэтому он выглядит поверхностно, как мы имеем дело с ситуацией (int argc, char ** argv), за исключением массива "ARGV" входит в рамку стека.

Что должна ожидать программы на его стеке / регистрах, когда она сначала называется Mac OS?

Это было полезно?

Решение

Из памяти я не думаю, что есть что-то интересное для стека, когда ваш код кода сначала называется. Классическая Mac OS не использовала ARGC / ARGV. Это было длинный Хотя время, поэтому я мог быть неправильным, и я выбросил все свои старые воменты Mac несколько лет назад, поэтому я не могу легко проверить.

Другие советы

Я не знаю, это какое-либо использование (я только смотрел на этот вопрос, потому что у него было 68000 в названии ...!) Но Информация о разработке Ye Offe Mac, похоже, кажется здесь:

http://developer.apple.com/legacy/mac/library/documentation/macos8/mac8.html.

(Гипотеза: argv Данные вполне могут быть на стеке. Очевидный способ разделить командную строку на детали, будет начать в конце, а не на начало. Пройти командную строку назад (используя -(An) Режим адресации) и найдите кусочки таким образом. Это потенциально усложняет вещи, но 68000 могут сравнить непосредственные значения для памяти, чтобы не было никакой большой хлопоты, чтобы проверить и тому подобное (если Mac OS делает это). После того, как начало детали найден, поместите свой адрес в стеке - вы, вероятно, получили начало Handy (из-за заражения), но PEA Сделал это легко в любом случае - и ткнуть 0 в его конец, чтобы завершить его. Как только все указатели были подтолкнуты, погрузчик мог сделать MOVEA.L A7,-(A7) или PEA A7 нажать argv указатель.

(Вероятно, это будет работать довольно хорошо, если вы закодировали его, и поэтому он не удивит меня, если бы это был подход, фактически взятый.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top