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 он и так должен знать. Видимо совсем другой ассемблер.
Вы поймите моё удивление, я находил в сети различные примеры кода, писанные под различные ассемблеры. Но никогда не было проблемы с компиляцией. Ваш асм код в мой компилятор даже пробовать бесполезно.
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.