You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Ну, в общем они сделали вот как. Вообще такой подход, это же GCC. Считайте так, что там всё по байтам построено. Да, PC нет. А если нужно прыгнуть всё же через PC, то нужно указывать так:
vectors:
rjmp main
rjmp .-2
rjmp vectors
rjmp vectors
rjmp vectors
rjmp vectors
rjmp vectors
rjmp vectors
rjmp vectors
rjmp vectors
То есть, PC-1, тут записывается как .-2. Причём, если указать .-1, то он сделает так, что прыжка словно не будет. Там будет rjmp на следующую инструкцию (в общем тупо словно два nop'а).
Кстати, даже интересно. NOP же занимает так же 2 байта. Но тратит 1 такт. Если нужно ждать 2 такта, то проще не писать 2 NOP'а на 4 байта, а один RJMP .0 на 2 байта, что потратит так же 2 такта. Если нужна экономия памяти.
Да, согласен, PC он и так должен знать. Видимо совсем другой ассемблер.
Вы поймите моё удивление, я находил в сети различные примеры кода, писанные под различные ассемблеры. Но никогда не было проблемы с компиляцией. Ваш асм код в мой компилятор даже пробовать бесполезно.
Я не подключенный конец заизолировал, но я не вскрывал так и экран этот не видел, видимо именно за счёт него и спец какой то изоляции он так и работает.
Ну, во-первых, там нет таких файлов. Во-вторых, если что-то и назначить, то это так же будет просто число. То есть, про что я. Вот я прыгаю на метки. То есть, я их обзываю как-то и ставлю в конце двоеточие. На метки он прыгает. А вот назову я:
.equ PC,???
И что я там написать должен?! В общем, это должны быть на уровне, как я пишу:
sbr R16,0x02
Я же нигде не объявляю про регистр R16. Так же и должно быть с PC.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.