IDA擅自合并代码一例

以下是一段汇编代码:

      mov     edx, [ebp+var_10]
      add     edx, 74h
      lea     eax, [ebx+74h]
      sub     esp, 4
      push    0CCh            ; Size
      push    eax             ; Src
      push    edx             ; Dst
      call    _memcpy
      mov     al, [ebx+140h]
      mov     edx, [ebp+var_10]
      mov     [edx+140h], al
      mov     al, [ebx+141h]
      mov     [edx+141h], al
      mov     al, [ebx+142h]
      mov     [edx+142h], al
      mov     al, [ebx+143h]
      mov     [edx+143h], al
      mov     al, [ebx+144h]
      mov     [edx+144h], al
      mov     al, [ebx+145h]
      mov     [edx+145h], al
      mov     al, [ebx+146h]
      mov     [edx+146h], al
      mov     al, [ebx+147h]
      mov     [edx+147h], al
      mov     al, [ebx+148h]
      mov     [edx+148h], al
      mov     al, [ebx+149h]
      mov     [edx+149h], al
      mov     al, [ebx+14Ah]
      mov     [edx+14Ah], al
      mov     al, [ebx+14Bh]
      mov     [edx+14Bh], al
      mov     al, [ebx+14Ch]
      mov     [edx+14Ch], al
      mov     al, [ebx+14Dh]
      mov     [edx+14Dh], al
      mov     al, [ebx+14Eh]
      mov     [edx+14Eh], al
      mov     al, [ebx+14Fh]
      mov     [edx+14Fh], al
      mov     al, [ebx+150h]
      mov     [edx+150h], al
      mov     al, [ebx+151h]
      mov     [edx+151h], al
      mov     al, [ebx+152h]
      mov     [edx+152h], al
      mov     al, [ebx+153h]
      mov     [edx+153h], al
      mov     al, [ebx+154h]
      mov     [edx+154h], al

IDA75与IDA77都把以上代码翻译为:

  memcpy((void *)(a3 + 116), (const void *)(v7 + 116), 0xE1u);

实际上,原始代码要做的操作是:

    memcpy(arg_8->_116, arg_0->_24._116, 204);
    arg_8->_320 = arg_0->_24._320;
    arg_8->_321 = arg_0->_24._321;
    arg_8->_322 = arg_0->_24._322;
    arg_8->_323 = arg_0->_24._323;
    arg_8->_324 = arg_0->_24._324;
    arg_8->_325 = arg_0->_24._325;
    arg_8->_326 = arg_0->_24._326;
    arg_8->_327 = arg_0->_24._327;
    arg_8->_328 = arg_0->_24._328;
    arg_8->_329 = arg_0->_24._329;
    arg_8->_330 = arg_0->_24._330;
    arg_8->_331 = arg_0->_24._331;
    arg_8->_332 = arg_0->_24._332;
    arg_8->_333 = arg_0->_24._333;
    arg_8->_334 = arg_0->_24._334;
    arg_8->_335 = arg_0->_24._335;
    arg_8->_336 = arg_0->_24._336;
    arg_8->_337 = arg_0->_24._337;
    arg_8->_338 = arg_0->_24._338;
    arg_8->_339 = arg_0->_24._339;
    arg_8->_340 = arg_0->_24._340;

即是把一个结构变量的部分分量赋给另一个结构变量。

带开环升压转换器和逆变器的太阳能光伏系统 太阳能光伏系统驱动开环升压转换器和SPWM逆变器提供波形稳定、设计简单的交流电的模型 Simulink模型展示了一个完整的基于太阳能光伏的直流到交流电力转换系统,该系统由简单、透明、易于理解的模块构建而成。该系统从配置为提供真实直流输出电压的光伏阵列开始,然后由开环DC-DC升压转换器进行处理。升压转换器将光伏电压提高到适合为单相全桥逆变器供电的稳定直流链路电平。 逆变器使用正弦PWM(SPWM)开关来产生干净的交流输出波形,使该模型成为研究直流-交流转换基本操作的理想选择。该设计避免了闭环和MPPT的复杂性,使用户能够专注于光伏接口、升压转换和逆变器开关的核心概念。 此模型包含的主要功能: •太阳能光伏阵列在标准条件下产生~200V电压 •具有固定占空比操作的开环升压转换器 •直流链路电容器,用于平滑和稳定转换器输出 •单相全桥SPWM逆变器 •交流负载,用于观察实际输出行为 •显示光伏电压、升压输出、直流链路电压、逆变器交流波形和负载电流的组织良好的范围 •完全可编辑的结构,适合分析、实验和扩展 该模型旨在为太阳能直流-交流转换提供一个干净高效的仿真框架。布局简单明了,允许用户快速了解信号流,检查各个阶段,并根据需要修改参数。 系统架构有意保持模块化,因此可以轻松扩展,例如通过添加MPPT、动态负载行为、闭环升压控制或并网逆变器概念。该模型为进一步开发或整合到更大的可再生能源模拟中奠定了坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值