Size: a a a

Compiler Development

2020 December 10

BD

Berkus Decker in Compiler Development
hazer_hazer
Почему тогда япы, компилируемые в байт-код не делают так? Из-за замыканий?
ну в байт коде обычно линкер по другому работает - как сделают так и будет
источник

BD

Berkus Decker in Compiler Development
можно и так же сделать
источник

M

MrSmith in Compiler Development
А причем тут линкер вы про goto?
источник

M

MrSmith in Compiler Development
Или я снова контекст потерял?
источник

M

MrSmith in Compiler Development
Кстати кто как транслятор тестирует?
источник

h

hazer_hazer in Compiler Development
А вот когда в ассемблере пишут call в чем разница между ним и goto?
источник

M

MrSmith in Compiler Development
Гоу ту это переход
источник

h

hazer_hazer in Compiler Development
hazer_hazer
А вот когда в ассемблере пишут call в чем разница между ним и goto?
или, например, ret команда, это вообще как с точки зрения машинного кода?
источник

M

MrSmith in Compiler Development
Есть условный и безусловный
источник

M

MrSmith in Compiler Development
А вызов это сложная штука происходить перемещение объектов исходя из конвенции ложится адрес возврата и тд
источник

h

hazer_hazer in Compiler Development
MrSmith
Есть условный и безусловный
это я понимаю. такое и байт-коде есть. просто call звучит как-то слишком высокоуровнево
источник

VS

Victor Shamparov in Compiler Development
hazer_hazer
А вот когда в ассемблере пишут call в чем разница между ним и goto?
Зависит от системы же. Но стандартный вариант - в стек записывается адрес возврата. Или в специальный регистр. Или в специальный стек.
источник

BD

Berkus Decker in Compiler Development
MrSmith
Кстати кто как транслятор тестирует?
тестами отличный способ
источник

M

MrSmith in Compiler Development
Berkus Decker
тестами отличный способ
Это понятно, не понятно как
источник

h

hazer_hazer in Compiler Development
MrSmith
А вызов это сложная штука происходить перемещение объектов исходя из конвенции ложится адрес возврата и тд
На такое сейчас процы способны?!
просто мой максимум ассемблера это семестр работы с базовой ЭВМ в вузе)
источник

BD

Berkus Decker in Compiler Development
hazer_hazer
А вот когда в ассемблере пишут call в чем разница между ним и goto?
call кладет адрес возврата на стек, jmp не кладёт
источник

BD

Berkus Decker in Compiler Development
goto это jmp + управление стековым фреймом
источник

VS

Victor Shamparov in Compiler Development
MrSmith
А вызов это сложная штука происходить перемещение объектов исходя из конвенции ложится адрес возврата и тд
Ну там для вызова всё нужно подготовить согласно конвенции - call сам это не делает.
UPD. Обычно. Я не видел случая, где call это делает.
источник

BD

Berkus Decker in Compiler Development
MrSmith
Это понятно, не понятно как
посмотри как делает llvm, они snapshot testing практикуют
источник

M

MrSmith in Compiler Development
Victor Shamparov
Ну там для вызова всё нужно подготовить согласно конвенции - call сам это не делает.
UPD. Обычно. Я не видел случая, где call это делает.
Это понятно
источник