You are posting as a guest.
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 are posting as a guest. 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.