- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个用于嵌入式 DSP 目标的应用程序(任何操作系统都不支持),并且开发是使用 C 语言进行的。我有一个简单的应用程序,它具有初始化和无限循环,如下所示:
#include <>
main (){
initialize ;
while (1){
poll_timer_for_scheduling (); // use for timing
remote_link_to_receive_data(); // used to receive data
remote_link_to_transmit_data(); // used to transmit data
switch (sel) {
case '1':
function1();
case '2':
dummy_function(); // to be replaced by function2() later
}
}
} // end of main
//-------------------------
function1()
{
// some code
}
//--------------------------
dummy_function()
{
// NO code; just an empty function to be replaced later by function2()
}
现在,我编译可执行文件并将其转储到 DSP 目标中,该目标运行完美。 dummy_function() 是一个我想稍后用 function2() 远程替换的函数,因为系统可能无法访问。这类似于应用程序的在线修补,但应用程序必须在目标中运行才能执行自修补。
所以我的要求是稍后在操作阶段使用附加功能更新可执行文件(以满足不可预见的情况)。如何编译 c 函数 function2() 并将可执行文件上传到 dummy_function()?
我正在寻找应用程序中动态链接功能的简化版本。是否有一些简单的机制可以实现这一目标?
最佳答案
您可以使用指向函数的指针,以便稍后以安全且原子的方式切换实现。因此最初这些指针都可以指向同一个无操作虚拟函数。在更新过程中,您必须将新函数的代码加载到内存中,然后将指针切换到指向新加载的代码中函数的位置。
我想棘手的部分可能不是函数的修补,而是编译该函数以便稍后加载它。在大多数桌面平台上,动态加载代码意味着执行重定位之类的事情。不确定您的 DSP 在这方面如何工作。但简单地重新编译整个项目并从中提取更改可能是不可行的。
关于c - 远程上传 exe 代码和嵌入式目标的动态链接功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880571/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!