VC#.net ASM 汇编讨论

相思梦 2014-06-01 11:57:52

[DllImportAttribute("Kernel32.dll", EntryPoint = "VirtualAlloc")]
public static extern IntPtr VirtualAlloc(IntPtr address, int size, uint allocType, uint protect);
[DllImportAttribute("Kernel32.dll", EntryPoint = "VirtualFree")]
public static extern bool VirtualFree(IntPtr address, int size, uint freeType);
const uint MEM_COMMIT = 0x1000;
const uint MEM_RESERVE = 0x2000;
const uint PAGE_EXECUTE_READWRITE = 0x40;
const uint MEM_RELEASE = 0x8000;


static string GetCpuName() // 取CPU名称
{
byte[] codeBytes = { 96, 184, 2, 0, 0, 128, 15, 162, 139, 117, 252, 54, 137, 6, 54, 137, 94, 4, 54, 137, 78, 8, 54, 137, 86, 12, 184, 3, 0, 0, 128, 15, 162, 54, 137, 70, 16, 54, 137, 94, 20, 54, 137, 78, 24, 54, 137, 86, 28, 184, 4, 0, 0, 128, 15, 162, 54, 137, 70, 32, 54, 137, 94, 36, 54, 137, 78, 40, 54, 137, 86, 44, 97 };
IntPtr handle = IntPtr.Zero;
handle = VirtualAlloc(IntPtr.Zero, codeBytes.Length, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
return null;
}


' PUSHAD
' MOV EAX, 80000002
' CPUID
' MOV ESI, DWORD PTR SS:[EBP-4]
' MOV DWORD PTR SS:[ESI], EAX
' MOV DWORD PTR SS:[ESI+4], EBX
' MOV DWORD PTR SS:[ESI+8], ECX
' MOV DWORD PTR SS:[ESI+C], EDX
' MOV EAX, 80000003
' CPUID
' MOV DWORD PTR SS:[ESI+10], EAX
' MOV DWORD PTR SS:[ESI+14], EBX
' MOV DWORD PTR SS:[ESI+18], ECX
' MOV DWORD PTR SS:[ESI+1C], EDX
' MOV EAX, 80000004
' CPUID
' MOV DWORD PTR SS:[ESI+20], EAX
' MOV DWORD PTR SS:[ESI+24], EBX
' MOV DWORD PTR SS:[ESI+28], ECX
' MOV DWORD PTR SS:[ESI+2C], EDX
' POPAD


问题,当利用VirtualAlloc函数动态调用时程式
直接退出,求解如是
...全文
285 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
相思梦 2014-06-05
  • 打赏
  • 举报
回复
引用 3 楼 laviewpbt 的回复:
用C#嵌入汇编吃力不讨好,直接把核心部分用C内嵌汇编,然后编译成标准的DLL,供C#调用最方便。
也不能这样说。虽然用VC __asm{ } 汇编代码放置进出。封装类库即可实现 但我们的主题是讨论C#自身实现汇编
laviewpbt 2014-06-03
  • 打赏
  • 举报
回复
用C#嵌入汇编吃力不讨好,直接把核心部分用C内嵌汇编,然后编译成标准的DLL,供C#调用最方便。
jwh2004 2014-06-03
  • 打赏
  • 举报
回复
同意楼上,用VC的ATL方式编程生成dll,然后C#调用dll。 将汇编嵌入在VC中。
相思梦 2014-06-02
  • 打赏
  • 举报
回复
DEP早就关了,没用。
E可以实现,C#死程序
devmiao 2014-06-01
  • 打赏
  • 举报
回复
需要关掉操作系统的DEP(数据执行保护)功能。Win7需要权限,并且禁用杀毒软件。
不平衡电网下基于延时相消法(DSC)的T型三电平LCL逆变器(Simulink仿真实现)内容概要:本文针对不平衡电网条件下T型三电平LCL逆变器的并网性能问题,提出基于延时相消法(DSC)的序分量分离控制策略,并通过Simulink进行仿真实现。研究重点在于解决电网电压不平衡引起的负序分量导致的并网电流畸变、功率波动及系统不稳定等问题。通过DSC方法实现正负序分量的快速、精确分离,结合三电平逆变器的中点电位控制与LCL滤波器的谐振抑制,优化系统在非理想电网下的动态响应与稳态性能。文中详细阐述了控制策略的设计、仿真模型的构建及关键参数的整定,并通过仿真结果验证了该方法在抑制电流畸变、平衡功率输出和提升系统鲁棒性方面的有效性。; 适合人群:具备电力电子、自动控制或电气工程相关专业背景,熟悉Simulink仿真工具,从事新能源发电、逆变器控制或微电网系统研究的研发人员及高年级研究生。; 使用场景及目标:①研究不平衡电网下三电平逆变器的并网控制策略;②掌握延时相消法(DSC)在序分量分离中的应用;③学习LCL型逆变器的建模与控制方法;④提升在复杂工况下电力电子系统稳定性分析与仿真能力。; 阅读建议:建议读者结合Simulink模型同步学习,重点关注DSC模块的实现逻辑、序分量控制环路设计及中点电位平衡策略,同时可通过修改电网不平衡度、负载扰动等工况进行仿真验证,深入理解控制策略的适应性与鲁棒性。
内容概要:本文对认知无线电中的双阈值能量检测方法进行了系统性仿真研究,并提供了完整的Matlab代码实现。通过引入高低两个能量阈值,该方法在复杂无线环境中能够更精确地区分授权用户信号与噪声或干扰,显著提升了频谱感知的准确性与可靠性。研究深入分析了算法原理,构建了详细的仿真模型,并从多个维度评估其性能,尤其在低信噪比条件下展现出相比传统单阈值方法更为优越的检测能力。文章还系统探讨了不同参数配置对检测性能的影响,为实际系统中的参数优化和工程应用提供了理论依据和技术支持。; 适合人群:具备一定通信工程、信号处理及Matlab编程基础的高校研究生、科研人员以及从事无线通信技术研发的工程技术人员。; 使用场景及目标:①用于认知无线电系统中高性能频谱感知技术的研发与性能优化;②作为高校相关课程的教学案例,帮助学生深入理解能量检测原理及其改进算法的设计思路;③为科研工作者提供可复现、可扩展的Matlab仿真平台,以支持对新型频谱感知算法的进一步探索与验证。; 阅读建议:建议读者结合提供的Matlab代码逐行研读,重点理解双阈值的设计理念、判决逻辑的实现流程以及仿真结果的分析方法。在学习过程中,应积极动手调整信号参数(如信噪比、采样点数、阈值大小等),观察其对检测概率、虚警概率等关键指标的影响,从而深化对算法性能边界的认知。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧