我试图运行多个虚拟主机(?),例如:http:/ localhost将指向一个项目,http:/ newsite指向另一个项目,http:/ myfavourite指向另一个项目不同的文档根目录.
(由于超链接发布限制,每个http://都是http:/ here)
我没有成功查看在/ etc/apache2中编辑apache文件的位置.我在寻找一个vhosts文件吗?
任何建议都很棒,谢谢.
我找不到cgdb反汇编二进制文件的方法,并在代码窗口中显示当前指令的汇编代码.这是可能的,我应该使用什么命令?我正在使用Mac OS X并从自制软件库获取cgdb.
我是一个Lisp初学者试图理解如何正确使用Lisp包系统,同时学习LTK用于GUI编程,使用SBCL 1.0.55.0.debian和Limp 0.3.4(如果重要的话,还有Debian Wheezy).我使用aptitude包管理器安装了ASDF(包cl-asdf&cl-common-lisp-controller),然后我使用Quicklisp网站上的说明安装了Quicklisp(http://www.quicklisp.org/beta/index.html) (不是来自Debian存储库)然后我(ql:quickload 'ltk)在SBCL控制台中安装了LTK .
hello-1.lisp(直接来自LTK教程):
(defun hello-1()
(with-ltk ()
(let ((b (make-instance ’button
:master nil
:text "Press Me"
:command (lambda ()
(format t "Hello World!~&")))))
(pack b))))
Run Code Online (Sandbox Code Playgroud)
如果我在一个新的SBCL Lisp的图像编译这个直上,我得到的消息WITH-LTK和PACK未定义功能,'BUTTON是不确定的变量.
所以,我发现我需要加载'ltk,然后再使用in-package.我能够运行它,我首先要使用(ql:quickload 'ltk)和(in-package :ltk)在SBCL控制台.但是,我仍然是一个'BUTTON未定义变量的错误消息.
* (ql:quickload 'ltk)
To load "ltk":
Load 1 ASDF system:
ltk
; Loading "ltk"
(LTK)
* (in-package :ltk)
#<PACKAGE "LTK">
* (compile-file "/home/user/code/lisp/hello-1.lisp")
; caught …Run Code Online (Sandbox Code Playgroud) 我目前正在MATLAB上开发一个基本的图像处理应用程序.我必须对以前的状态功能实现撤消.我搜索网有uiundo但它只是undos GUI动作.是否有一个简单的撤消命令.谢谢.
我有兴趣在Common Lisp中为x86-64开发某种ring0内核模式调试器,它将作为Linux内核模块加载,而且我更喜欢Common Lisp to C in general programming,我想知道不同的Common Lisp实现会如何适合这种编程任务.
调试器将使用一些外部反汇编库,例如通过某些FFI的udis86.在我看来,最简单的方法是在C中编写内核模块,因为它们需要包含C函数和(Linux内核模块编程指南),因此kernel-land模块代码将使用CFFI从C调用Common Lisp代码.我们的想法是为64位Linux创建一个ring0调试器,其灵感来自于Rasta Ring 0调试器的概念,该调试器仅适用于32位Linux并且需要PS/2键盘.我认为最具挑战性的部分是具有硬件和软件断点以及低级视频,键盘或USB输入设备处理的实际调试器代码.内联汇编对此有很大帮助,在我看来,在SBCL中内联汇编可以通过使用VOP(SBCL内部:VOP)(SBCL内部:添加VOP)来实现,而这个IRC日志提到了ACL(Allegro Common Lisp) ,CCL(Clozure Common Lisp)和CormanCL都有LAP(Lisp汇编程序).ACL和CormanCL都是专有的,因此被丢弃,但CCL(Clozure Common Lisp)可能是一种选择.构建独立可执行文件的能力也是一项要求; 我目前正在使用的SBCL有它,但由于它们是完整的Lisp图像,它们的大小非常大.int init_module(void)void cleanup_module(void)
我的问题是:在Common Lisp中为Intel x86-64创建ring0内核模式调试器是否可行,在C和/或汇编中实现低级代码,如果是,则为64位的Common Lisp实现Linux最适合这种努力,如果有多个合适的Common Lisp实现,有什么优缺点?如果它比Common Lisp提供了一些好处,那么Scheme也可以是一种可能的选择.我很清楚绝大多数内核模块都是用C语言编写的,我知道C和x86组件足够好,能够在C和/或汇编中编写所需的低级代码.这不是尝试将Linux内核移植到Lisp中(参见:https://stackoverflow.com/questions/1848029/why-not-port-linux-kernel-to-common-lisp),但是计划写入Common Lisp是一个Linux内核模块,可用作ring0调试器.
我熟悉C/C++和汇编的x86/x64的语言,但现在我需要学习的图形优化(SSE/SSE2和一般ASM优化),我可以使用哪些资源/书籍/链接,了解这些主题?我一直在网上搜索没有太多运气
C++
ATT大会
我试图理解以下两条指令的行为:
pushl %esp
Run Code Online (Sandbox Code Playgroud)
和:
popl %esp
Run Code Online (Sandbox Code Playgroud)
请注意,它们将计算出的值存储回来%esp.
我正在独立地考虑这些指令,而不是按顺序.我知道存储的值%esp总是递增/递减之前的值,但是我怎么能用汇编语言表示行为呢?这是我到目前为止所提出的:
推送:
movl %esp, %edx 1. save value of %esp
subl $4, %esp 2. decrement stack pointer
movl %edx, (%esp) 3. store old value of %esp on top of stack
Run Code Online (Sandbox Code Playgroud)
对于pop:
movl (%esp), %esp You wouldn’t need the increment portion.
Run Code Online (Sandbox Code Playgroud)
它是否正确?如果没有,我哪里错了?谢谢.
我写了一个NASM程序并使用它创建了一个列表文件nasm -f elf -l rs.lst rs.asm.该程序完美地工作,接收键输入值,并输出值是控制键还是可打印键,以及它是数字,小写还是大写字母.
我需要帮助理解我在.lst文件中读到的内容.左边的数字是地址吗?说明?他们代表记忆吗?这是.lst.
1 segment .data
//Removed my student ID info
8 ;Program Output Strings
9
10 00000023 5072657373204B6579- askForKey: db 'Press Key and Enter: ', 10 ; ;10 is the newline value
11 0000002C 20616E6420456E7465-
12 00000035 723A200A
13 askLen: equ $-askForKey
14
15 00000039 436F6E74726F6C204B- controlKey: db 'Control Key ', 10
16 00000042 6579200A
17 controlLen: equ $-controlKey
18
19 00000046 5072696E7461626C65- printableKey: db 'Printable Key ', 10
20 0000004F …Run Code Online (Sandbox Code Playgroud) GCC编译器
$ gcc --version
gcc (GCC) 4.8.2
...
Run Code Online (Sandbox Code Playgroud)
不生成inc汇编指令,它实际上可能有用,就像在这个C程序中:
int main(int argc, char **argv)
{
int sum = 0;
int i;
for(i = 0; i < 1000000000L; i++) <---- that "i++"
sum += i;
return sum;
}
Run Code Online (Sandbox Code Playgroud)
相反,它会生成一条add指令:
0000000000000000 <main>:
0: 31 d2 xor %edx,%edx
2: 31 c0 xor %eax,%eax
4: 0f 1f 40 00 nopl 0x0(%rax)
8: 01 d0 add %edx,%eax
a: 83 c2 01 add $0x1,%edx <---- HERE
d: 81 fa 00 ca 9a …Run Code Online (Sandbox Code Playgroud) 我正在使用Common Lisp(64位Debian GNU/Linux中的SBCL 1.1.5)编写一个多体系结构汇编程序/反汇编程序,目前汇编程序为x86-64的子集生成正确的代码.为了组装x86-64汇编代码,我使用一个哈希表,其中汇编指令助记符(字符串)如"jc-rel8"和,"stosb"是返回一个或多个编码函数列表的键,如下所示:
(defparameter *emit-function-hash-table-x64* (make-hash-table :test 'equalp)) (setf (gethash "jc-rel8" *emit-function-hash-table-x64*) (list #'jc-rel8-x86)) (setf (gethash "stosb" *emit-function-hash-table-x64*) (list #'stosb-x86))
编码函数就像这些(有些更复杂):
(defun jc-rel8-x86 (arg1 &rest args) (jcc-x64 #x72 arg1)) (defun stosb-x86 (&rest args) (list #xaa))
现在我试图通过使用转换为Common Lisp CLOS语法的NASM(NASM 2.11.06)指令编码数据(文件insns.dat)来合并完整的x86-64指令集.这意味着代替用于发射的二进制码(如上面的函数)与自定义的情况下正则函数x86-asm-instruction类(到目前为止一个非常基本的类,某些20个时隙:initarg,:reader,:initform等等),其中emit将用于带有参数的方法用于发出给定指令(助记符)和参数的二进制代码.转换后的指令数据看起来像这样(但它超过40'000行,正好是7193 make-instance和7193 setf).
;; first mnemonic + operand combination instances (:is-variant t). ;; there are 4928 such instances for x86-64 generated …
assembly ×6
common-lisp ×3
lisp ×3
x86 ×3
sbcl ×2
x86-64 ×2
apache ×1
asdf ×1
att ×1
c ×1
cgdb ×1
clos ×1
disassembly ×1
gcc ×1
gcc4.8 ×1
gdb ×1
graphics ×1
linux-kernel ×1
listings ×1
macos ×1
matlab ×1
nasm ×1
optimization ×1
performance ×1
quicklisp ×1
sse ×1
stack ×1
ubuntu ×1
undo ×1
virtualhost ×1