我在Linux上学习asm(noobuntu 10.04)我得到了以下代码:http://asm.sourceforge.net/intro/hello.html
section .text
global _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
Run Code Online (Sandbox Code Playgroud)
这是一个简单的问候世界.Linux +上的运行直接调用内核(显然).有谁能解释一下这里到底发生了什么?我认为它读取eax&ebx处理器寄存器和ecx,edx数据中的整数,并在调用内核时定义系统调用.如果是这样,当调用int 0x80时,不同的整数组合是否定义了不同的系统调用?
我对man页面不太满意,但已经阅读了我能找到的每一个相关的页面,是否有任何man page告诉我哪些组合定义了什么系统调用?
任何帮助表示赞赏.逐行解释将是惊人的... - 谢谢提前杰里米
我想知道我是否可以减去表格中特定列的所有值的相同值(偏移量).
例如,我有:
Col1
------
34
35
36
Run Code Online (Sandbox Code Playgroud)
我想做到:
Col1
------
24
25
26
Run Code Online (Sandbox Code Playgroud)
这样做的SQL代码是什么?
具体来说,有人可以告诉我这段代码有什么问题.它应该启动线程,所以应该打印"输入线程..."5次,然后等到调用notifyAll().但是,它会随机打印"输入......"和"完成......",并且仍在等待其他人.
public class ThreadTest implements Runnable {
private int num;
private static Object obj = new Object();
ThreadTest(int n) {
num=n;
}
@Override
public void run() {
synchronized (obj) {
try {
System.out.println("Entering thread "+num);
obj.wait();
System.out.println("Done Thread "+num);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Runnable tc;
Thread t;
for(int i=0;i<5;i++) {
tc = new ThreadTest(i);
t = new Thread(tc);
t.start();
}
synchronized (obj) {
obj.notifyAll();
}
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
OpenID和OAuth之间有什么区别?
OpenID和oAuth之间的真正区别是什么?他们看起来和我一样.
我应该澄清,我打算在drupal中使用它们,如果这有任何区别的话.所以我想我受到drupal中可用的任何模块实现的约束.
有必要将"标准"程序集移出xap文件(Silverlight 4应用程序).我有一个类似的问题(Silverlight:如何处理标准程序集)并得到了很好的链接与深刻的解释.但并非一切都很清楚.
在我通过使用应用程序库缓存打开"减少XAP大小"之后,我的xap文件的大小减少了两倍,以下程序集被移出到单独的zip文件中:
但仍然很少有其他人似乎很适合转移到单独的文件中:
所有这些程序集都是从Silverlight应用程序(以及使用这些程序集的Silverlight项目)引用的.
你能解释一下:
非常感谢你!
PS可能我的问题的答案在文中:
在Silverlight SDK中添加对库程序集的引用,或者添加对有效assemblyShortName.extmap.xml映射文件的任何程序集的引用.
但我不明白这是什么意思.如果我正确理解,我需要将这些程序集(我想要移出)的引用添加到Silverlight SDK中.但是怎么做呢?谢谢.
如果我开始:
a=[1,2,4]
Run Code Online (Sandbox Code Playgroud)
我希望结果如此
a=[1,3,2,4]
Run Code Online (Sandbox Code Playgroud)
我怎么做这个追加?
我正在尝试加载描述这些"功能"的页面.但是,Windows中的R控制台似乎讨厌我,它只返回+
?for
?repeat
Run Code Online (Sandbox Code Playgroud) 好吧,我第一次试图解释我在做什么的尝试失败了.我基本上复制了Crockford的Object.create(),除了私有变量.
如果你看看这里接受的答案如何从javascript中继承一个类?,你会看到Object.create是最后一个模式,我认为它更符合Javascript(对象beget对象)的原型性质,而不是模仿经典继承(类beget对象).
如果你看一下维基百科关于原型编程的文章(http://en.wikipedia.org/wiki/Prototype-based_programming),你可以看到更多我的意思.
但是,Object.create()的缺点是不支持私有成员.这就是我的建议:
Function.prototype.from = function(obj) {
function F() {this.parent = Object(obj);}
F.prototype = obj;
var out = new F();
this.apply(out);
return out;
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以这样创建对象:
// Create an object
var a = function() {
var private_property = 'blue';
this.public_property = 7;
this.public_method = function() {
alert(this.public_property + ' ' + private_property);
}
}.from(null); // .from() works too, but .from(null) is more revealing
// Create a new object using 'a' as the prototype
var b = …Run Code Online (Sandbox Code Playgroud) 我试图在IDE和命令行中在Visual Studio 2008 Express Edition Service Pack 1(之后安装了一些相关的Windows SDK)下构建64位本机C++应用程序.这是在Windows XP Professional x64 Edition版本2003 Service Pack 2计算机上.
我知道专业版可能提供真正的VS IDE集成,但我特别希望在Visual Studio 2008 Express Edition中实现这一点.
但是,我在Visual Studio 2008 Express IDE的项目配置中遇到了一些麻烦,我希望有人可以回答可能出现的问题.关键目标是能够从IDE本身以及命令行中通过执行vcvarsall.bat类似批处理文件或类似批处理文件来构建64位本机应用程序.
这是我到目前为止尝试的内容:
我安装了带有SP1的Visual Studio 2008 Express Editions,它安装了某种类型的SDK,但我认为不是包含64位编译器的正确版本(但当时并不知道它).
我构建了一个hello world Win32 Console应用程序,并查看为可执行文件生成的清单文件.我在清单文件中找到了"x86",这不是64位AFAICT,所以我做了更多研究.
我发现Visual Studio 2008 Express Edition中有什么"缺失"?.我看到了一些回复,其中一个回复中有一个缺少功能的列表,其中包含"64位Visual C++工具"作为缺少的功能之一.
但是,在维基百科条目中,我们看到:
可以将64位编译器真正集成到Visual C++ 2008 Express Edition中,但仍然很麻烦.9
所以,我尝试了上面给出的9个链接中的指令.该链接实际上是指如何:将Visual C++项目配置为目标64位平台.我浏览了该页面上的各个步骤,但他们指示您执行以下操作:
单击"类型"或选择新平台下拉箭头,然后选择64位平台.
但下拉列表中没有条目.
我再次提到维基百科上的SDK页面,特别是64位开发部分,其中指出:
最近发布的适用于Windows Server 2008和.NET …
我有一个非常长的字符串,其中包含许多新行(这是一个非常长的SQL语句).
当我用换行符分解它时,SQL更容易阅读.但有时,我需要从代码中复制sql语句以粘贴到sql developer中.
在Perl中,我总是喜欢qq运算符,您可以使用它来代替双引号:
你用它是这样的:
$myString = qq{
SELECT *
FROM table_a a
JOIN table_b b ON a.id = b.id ... etc
};
Run Code Online (Sandbox Code Playgroud)
JAVA中是否有等价物?我发现必须像这样分解字符串中的字符串很尴尬:
String myString = " SELECT * " +
" FROM table_a a " +
" JOIN table_b b ON a.id = b.id ... etc ";
Run Code Online (Sandbox Code Playgroud)
并且很难从代码中复制SQL语句.我最终不得不删除所有引号和+
是否有Java等价物?或者是否有更好的技巧将可读的,可复制的SQL语句放在Java代码中?
java ×2
.net ×1
64-bit ×1
assembly ×1
inheritance ×1
javascript ×1
linux-kernel ×1
mysql ×1
notify ×1
oauth ×1
openid ×1
operators ×1
perl ×1
phpmyadmin ×1
prototype ×1
python ×1
r ×1
silverlight ×1
string ×1
syntax ×1
system-calls ×1
wait ×1
x86 ×1
xap ×1