В llvm есть такие операции как усечение значений и расширение. Например усечением 16 битного слова будет являться 8 бит, т.е. 1 байт. Это легко реализуется, например, усеченным значением регистра HL будет регистр L.
Теперь о расширении значений. Всего имеется 3 вида расширений:
1. zext - расширение с обнулением старшей части. Например расширение регистра A в регистра HL будет выглядеть так:
2. anyext - расширение с неопределенной старшей частью:Код:LD L,A LD H,#00
3. sext - знаковое расширение. Т.е. если 7 бит равен единице, то старшая часть заполняется единицами. Что-то вроде этогоКод:LD L,A
Пример написал для большего понимания. Посоветуйте как эффективнее и короче можно сделать знаковое расширение.Код:LD L,A LD H,#00 BIT 7,A JR Z,NO_SIGN LD H,#FF NO_SIGN:




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

