【问题标题】:What does the assembly instruction trap do?汇编指令陷阱有什么作用?
【发布时间】:2012-11-26 01:07:01
【问题描述】:

RTFM

程序通常会在程序需要时发出软件陷阱 由操作系统提供服务。通用异常处理程序 操作系统确定陷阱的原因并做出响应 适当的。

汇编指令陷阱是否与 BASIC 中的指令 TRAP 相似? 答案似乎是肯定的。你能接受或拒绝我的结论吗?

“不中断”的代码是根据我的指示:

noint:
    PUSH r8
    movia r8,0x003b683a # machine code for TRAP
    ldw et,-4(ea) # read instr closest to return
    cmpeq et,et,r8 # compare
    POP r8
    bne et,r0,TrapHandler # if equal, jump to traphandler

更新

你可以在 BASIC 中编写 AFAIK,例如

10 TRAP 20

使第 20 行成为处理错误的行。

【问题讨论】:

  • 你指的是哪个 BASIC 方言?
  • @JensBjörnhager Commodore 64。我在 BASIC 中发现了陷阱:classic-games.com/commodore64/cbmtoken.html
  • 链接断开。 this 是您链接的内容,对吗?
  • @keyser 是的。我想 gcc 不能生成所有的汇编指令(例如TRAP)。
  • 它总是为系统调用生成软件陷阱。我不知道具体的说明,也许INT

标签: assembly basic nios


【解决方案1】:

不确定 TRAP 在 BASIC 中的作用,但您链接的汇编器手册中的 TRAP 指令会生成可由操作系统处理的硬件异常。

程序员很少需要在他们的代码中使用这条指令。它的典型用途是由调试器在需要停止的点(断点)处插入正在调试的代码中,然后运行/继续程序,并在到达TRAP 指令后重新获得控制权。

【讨论】:

    【解决方案2】:

    用户进程可以自愿过渡到操作系统内核,请求内核代表用户做一些操作。系统调用是内核提供的任何可以从用户级调用的过程。大多数处理器使用特殊的陷阱指令实现系统调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多