- 王奥丞
- llvm工具链
- nodejs版模拟器中调试器部分
- 通过elf生成v9 excuatble和网页版模拟器的调试符号文件的脚本
- 近期目标
- 编译器
变长参数结构体作为函数参数结构体作为函数返回值函数指针取地址32位常量Loada > b ? a : b无符号算数小范围case大范围case- **浮点数
- 编译器已知bug
调用函数没有保存所有called saved regsiters, 而且保存的寄存器有不必要的调用非函数指针函数时, 偏移不能超过16位不同长度整数转换无符号整数被当成有符号(still exists?)- long long乘法, 目前只能高位是0
8位/1位整数符号扩展- AlexInstrLowering.cpp有一些未翻译的LLVM IR
- AlexInstrInfo::InsertBranch not implemented
Function Epologue
- 编译器目标代码生成模块
- 检查每条指令的二进制代码是否正确
opcode > 7位的指令暂时生成错误
- AlexMachine缺少的指令
ORi $ra, $rb, immLBU/LHU $ra, $rb, imm, 无符号(填0)扩展将一个寄存器最低位零扩展到32位- MULHS long long的乘法, 可以软件实现?
- 不能处理的LLVM IR
anyext (貌似可以用clang -O2消除掉这条指令)
elf转换器, 提取elf中的符号信息symbol addressline number- frame info
- 编译器
- 长期目标
- 编译器
- 要变成伪指令的指令
lbit, lbitslbslhssext_inreg所有符号扩展指令用shl/sar实现
lw/swselect
- 系统指令
- 获得pc
设置时钟中断
- 要变成伪指令的指令
- 汇编器: 完成v0.1
llvm-mc
- 内联汇编: 完成v0.1
- 测试
constraints: r, =r- constraints: c
- 可能的问题:
立即数长度
- 测试
- 连接器
全局变量函数指针局部跳转DWARF调试信息生成(源码级调试)DWARF未测试32bit data
- 编译器