在搜索差异时,我发现了这些定义:
编译是获取用一种语言编写的源代码并转换为另一种语言的通用术语.
Transpiling是一个特定的术语,用于获取用一种语言编写的源代码,并转换为另一种具有相似抽象级别的语言.
我理解抽象是什么.
但是,在上述定义中,"相似的抽象级别"是什么意思呢?我们如何找到语言中的抽象级别?
我正在研究加载静态文件时的浏览器性能,这种疑问已经到来.
有人说使用CDN静态文件(即谷歌代码,jQuery最新,AJAX CDN ......)对性能更好,因为它从另一个域请求而不是整个网页.
提高性能的其他方法是将
Expires标头设置为等于几个月后,强制浏览器缓存静态文件并减少请求.我想知道哪种方式是最好的,考虑性能以及我是否可以将它们结合起来.
先谢谢你们,我喜欢StackOverflow.
我正在阅读此链接中有关C运行时初始化的角色:http://www.embecosm.com/appnotes/ean9/html/ch05s02.html
它表示运行时初始化执行诸如设置堆栈之类的任务,并且在更详细的页面中,它还说它用零初始化bss段.在其他一些地方,我还读到它初始化数据和其他一些段.
这在我的脑海中产生了一个疑问,那就是装载机的功能呢?因为其中一些任务也是装载机的责任.
所以,我的问题:
编辑
好的,如果该链接具体描述了嵌入式系统的运行时初始化的作用,那么它对普通系统有什么作用.据我所知,运行时初始化将只调用main,而没有其他工作留给它.
我正在编写一个chrome扩展,它检测正在打开的文件类型,并在页面上注入一个执行许多其他操作的脚本.以下是我注入脚本的background.js代码的一部分:
chrome.webRequest.onHeadersReceived.addListener(function(details){
console.log("Here: " + details.url + " Tab ID: " + details.tabId);
if(toInject(details))
{
console.log("PDF Detected: " + details.url);
if(some-condition)
{
//some code
}
else
{
chrome.tabs.executeScript(details.tabId, { file: "contentscript.js", runAt: "document_start"}, function(result){
if(chrome.runtime.lastError)
{
console.log(chrome.runtime.lastError.message + " Tab ID: " + details.tabId);
}
});
}
return {
responseHeaders: [{
name: 'X-Content-Type-Options',
value: 'nosniff'
},
{
name: 'X-Frame-Options',
/*
Deny rendering of the obtained data.
Cant use {cancel:true} as we still need the frame to be accessible.
*/
value: …Run Code Online (Sandbox Code Playgroud) 我正在运行以下代码编译为: gcc A.c B.c -o combined
计划A:
#include<stdio.h>
int a=1;
int b;
int main()
{
extern int a,b;
fun();
printf("%d %d\n",a,b);
}
Run Code Online (Sandbox Code Playgroud)
方案B:
int a;
int b=2;
int fun()
{
printf("%d %d\n",a,b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在运行"组合"程序时,输出为:
1 2
1 2
Run Code Online (Sandbox Code Playgroud)
现在,我对这个问题有些疑惑:
为什么不输出:
0 2
1 0
是不是a和b定义了两次?
请清楚地解释一下,我在了解外部时遇到了很多问题,而且很少有这些疑虑不时出现.
提前致谢.
我正在阅读__FUNCTION__/ __func__在C/C++中(它们用于打印使用它们的函数的名称).我读过的每个地方都说这些都是宏,并在预处理时被替换.所以,我通过使用命令查看预处理输出来调查这一点gcc -E prog.c.但是我发现函数名称既__func__没有__FUNCTION__被预处理器替换也没有被替换.
那么,它是一个宏吗?如果没有,它是什么以及如何实施?
编辑
甚至尝试过cpp prog.c.但仍未取代.
此外__FILE__,__LINE__在C++和__FUNCTION__使用这篇文章说,它永远不会影响性能.请澄清.
我的问题是为什么在CALL指令的操作码获取中有6T状态,而在8085微处理器中有4个用于其他指令.我搜索了很多,但没有找到任何满意的答案.
这里:http://www.edaboard.com/thread201650.html它说它与CALL情况下使用的双寻址模式有关.但并没有真正解释为什么6T表示.
任何的想法?
编辑
当我开始知道CALL需要18个T状态时,就出现了这个问题.
根据我的计算,它应该是:4(对于操作码获取)+ 3 + 3(两个存储器读取以读取子程序地址)+ 3 + 3(对于堆栈上的两个存储器写入)= 16
因此,在搜索互联网时,我知道在CALL情况下操作码获取部分需要6T状态而不是4.
UPDATE
在阅读了评论并重新思考之后,我开始知道PUSH通常会将12个T状态作为指令.在CALL的情况下我们可以忽略PUSH的操作码获取部分,因为没有显式的PUSH指令,所以现在我们有8(12 - 4).所以,我觉得是因为堆栈指针的减少?因为即使在推送中它应该是6(3 + 3用于存储器写入),但在这里它是8(4 + 4).
c ×3
8085 ×1
abstraction ×1
c++ ×1
call ×1
cdn ×1
extern ×1
javascript ×1
loader ×1
macros ×1
output ×1
performance ×1
runtime ×1
transpiler ×1