arrays - 这条线如何将无符号短整数与数组相乘?
问题描述
out_regs[i_w + 1] = (op_result = CAST(op_data_type)mem[rm_addr] * (op_data_type)*out_regs) >> 16, \
该行来自宏:
// [I]MUL/[I]DIV/DAA/DAS/ADC/SBB helpers
#define MUL_MACRO(op_data_type,out_regs) (set_opcode(0x10), \
out_regs[i_w + 1] = (op_result = CAST(op_data_type)mem[rm_addr] * (op_data_type)*out_regs) >> 16, \
regs16[REG_AX] = op_result, \
set_OF(set_CF(op_result - (op_data_type)op_result)))
CAST
宏是:
// Reinterpretation cast
#define CAST(a) *(a*)&
在第 386 行:
i_w ? MUL_MACRO(unsigned short, regs16) : MUL_MACRO(unsigned char, regs8)
这是如何初始化mem
的:regs16
regs8
#define RAM_SIZE 0x10FFF0
unsigned char mem[RAM_SIZE], *regs8;
unsigned short *regs16;
所以我的问题是:如何CAST(op_data_type)mem[rm_addr]
乘以(op_data_type)*out_regs
while mem[rm_addr]
is a unsigned short
(or unsigned char
) and out_regs
is a array?谢谢你的帮助!
解决方案
推荐阅读
- python - 如何在pyqt5文本浏览器上打印连续数据
- mysql - 为每个值运行 MySQL SELECT 查询,由另一个 SELECT 返回
- javascript - 如何在另一个文本区域中显示文本区域和可编辑 div 中突出显示的文本的位置?
- cakephp - CakePHP 1.3 迁移到 4.x
- flutter - 使用 3D 安全/sca(卡身份验证)在服务器上完成 Stripe 支付
- swift - Swift:从完成处理程序中获取价值
- r - 根据一列用 CI 画三条线
- python - python:等到一个函数完成
- python - 在列名中搜索字符串并返回整个列
- spring - Kubernetes/Spring Boot 中的服务发现