[llvm-dev] TI 59 backend

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Wed Mar 14 11:30:35 PDT 2018


On 3/14/2018 8:53 AM, via llvm-dev wrote:
> Hello,
>
> I am a new comer to llvm framework. I read quite many tutorials but I am still not able to determine whether llvm can be used for my project: implementing a backend for the famous Texas Instruments 59 Calculator (sold from 1977 to 1982).
>
> This is not a CPU but it uses a kind of bytecode that is interpreted (see examples in http://ti59compiler.wixsite.com/ti59/t-compiler). It has no stack, no frame, only floating point registers. The memory is split between program (up to 960 steps) and registers (up to 100). A register consumes 8 program steps, reducing the program size accordingly.
>
> The most tricky part is the following: a simple instruction like MOV R1,N may require more or less bytes to be coded. For instance:
>
>     MOV R1,1   will require 3 bytes: (key) 1, STO, 01.
>     MOV R2,345 will require 5 bytes: (key) 3, (key) 4, (key) 5, STO, 02.
>
> How to cope with such an instruction? Can llvm be used to generate the right bytecode?

 From your description, it sounds like the architecture doesn't support 
pointers or integer arithmetic; that probably makes it impossible to 
write a usable LLVM backend.

Instruction sets with with multiple instruction sizes are relatively 
common; x86, Thumb2, microMIPS, and RISCV all fall into this category.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project



More information about the llvm-dev mailing list