小编zwe*_*nov的帖子

为什么gcc在创建汇编代码时会这样做?

我正在玩弄gcc -S了解内存和堆栈的工作原理.在这些戏剧中,我发现了一些我不清楚的事情.你能帮我理解一下原因吗?

  1. 当调用函数的参数设置为一个名为一个它使用movesp代替push.没有使用的优势是什么push

  2. 与其堆栈相关的函数将参数指向它们ebp + (N + offset)(其中N是为返回地址保留的大小).我希望看到esp - offset哪个更容易理解.ebp到处都是基本点的原因是什么?我知道这些是平等的,但无论如何?

  3. 这个魔术在一开始是main什么?为什么esp必须以这种方式初始化?

    and    esp,0xfffffff0
    
    Run Code Online (Sandbox Code Playgroud)

谢谢,

assembly gcc

8
推荐指数
1
解决办法
109
查看次数

在Emacs中显示远程HTML的内容

我知道w3m与Emacs的集成,但我很难让它在我的W7/x64上运行:这里有一个w3m二进制的永久分段错误.

我想知道是否有另一种方法可以在Emacs中显示远程HTML,可能是通过Readability/GetPocket等服务完成的初步过滤?我不需要在那里导航所以清除内容将是完美的.

谢谢,

html emacs w3m

6
推荐指数
1
解决办法
1686
查看次数

使Emacs编译窗口在其他帧中显示错误

我有两个框架; 第二帧始终用于显示*编译*缓冲区.我想使(compilation-goto-error)导航到另一帧错误的行.我已经实现了一个函数来执行此操作:

(defun my-compile-goto-error-other-frame ()
  (interactive)
  ;;; just for simplification; in the read life there should be 
  ;;; a search of a frame by name
  (other-frame 1)
  ;;; I rely on the behavior when 'compile-goto-error' uses an another 
  ;;; window in a frame to show a source code
  (switch-to-buffer "*compilation*")
  (compile-goto-error)
  (recenter-top-bottom)
  (delete-other-windows))
Run Code Online (Sandbox Code Playgroud)

我相信这个实现是丑陋的(但在大多数情况下它是有效的).

  • 如何摆脱创建新的可见缓冲区并杀死未使用的缓冲区的顺序?有时会出现闪烁.可能有办法无形地执行这些步骤并仅显示结果?

  • 如何看待(my-compile-display-error-other-frame)的正确实现?

类似于以下?

(defun my-compile-display-error-other-frame ()
  (my-compile-goto-error-other-frame)
  (other-frame 1))
Run Code Online (Sandbox Code Playgroud)

谢谢.

更新:

@lawlist,抱歉不清楚.此代码中没有底层函数.标准的'compile-goto-error'和我希望实现我自己的一个将在另一个框架中打开代码.我相信我的实施并不好; 我想它可能看起来像:

(defun ... () 
  ;;; Make Emacs …
Run Code Online (Sandbox Code Playgroud)

emacs elisp compilation

5
推荐指数
1
解决办法
1728
查看次数

让 Emacs 通过 Socks 代理访问 HTTPS

这个问题让我抓狂。我有一个本地 SOCKSv5 代理,它是系统上所有应用程序的网关。我想穿上url-retrieve-synchronously袜子。通过以下设置:

(setq socks-noproxy '("127.0.0.1"))
(setq socks-server '("Default server" "127.0.0.1" 8010 5))
(setq url-gateway-method 'socks)
Run Code Online (Sandbox Code Playgroud)

通过纯 HTTP 进行检索工作正常:

(url-retrieve-synchronously "http://gnu.org")
#<buffer  *http www.gnu.org:80*>
Run Code Online (Sandbox Code Playgroud)

但它不适用于HTTPS

(url-retrieve-synchronously "https://gnu.org")
Run Code Online (Sandbox Code Playgroud)

它会导致:

Debugger entered--Lisp error: (file-error "make client process failed" "connection timed out" :name "gnu.org" :buffer #<buffer  *url-http-temp*> :host "gnu.org" :service 443 :nowait nil)
  make-network-process(:name "gnu.org" :buffer #<buffer  *url-http-temp*> :host    "gnu.org" :service 443 :nowait nil)
  open-network-stream("gnu.org" #<buffer  *url-http-temp*> "gnu.org" 443)
  open-gnutls-stream("gnu.org" #<buffer  *url-http-temp*> "gnu.org" 443)
  network-stream-open-tls("gnu.org" #<buffer  *url-http-temp*> "gnu.org" 443 …
Run Code Online (Sandbox Code Playgroud)

emacs proxy elisp socks

5
推荐指数
1
解决办法
6373
查看次数

标签 统计

emacs ×3

elisp ×2

assembly ×1

compilation ×1

gcc ×1

html ×1

proxy ×1

socks ×1

w3m ×1