小编Har*_*rry的帖子

Swift Optionals - 条件中的变量绑定需要初始化程序

我是Swift的新手并试图弄清楚Optional的概念.我在Playground中有一小段代码,它给了我"条件中的变量绑定需要初始化程序"错误.有人可以解释为什么以及如何解决它?

我只想打印"是"或"否",具体取决于"score1"是否有值.这是代码:

import Cocoa

class Person {
    var score1: Int? = 9

    func sum() {
        if let score1 {
            print("yes")
        } else {
            print("No")
        }
    }//end sum
 }// end person

 var objperson = person()
 objperson.sum()
Run Code Online (Sandbox Code Playgroud)

optional swift

15
推荐指数
2
解决办法
2万
查看次数

剥离的二进制文件显示“ _cxa_finalize”而不是“ libc_start_main”

为什么要剥离二进制显示_cxa_finalize而不是libc_start_main

我正在尝试main()在Linux(Ubuntu)上的一个非常简单的C程序中查找和反汇编。二进制文件被剥离。在下面,您可以看到相同说明的拆卸(未剥离)与拆卸(剥离)。

问题:_cxa_finalize剥离版本中包含什么?为什么libc_start_main被替换_cxa_finalize

不剥离:

106d:   48 8d 3d c1 00 00 00    lea    rdi,[rip+0xc1]        # 1135 <main>

1074:   ff 15 66 2f 00 00       call   QWORD PTR [rip+0x2f66]        # 3fe0 <__libc_start_main@GLIBC_2.2.5>
Run Code Online (Sandbox Code Playgroud)

剥离:

106d:   48 8d 3d c1 00 00 00    lea    rdi,[rip+0xc1]        # 1135 <__cxa_finalize@plt+0xf5>

1074:   ff 15 66 2f 00 00       call   QWORD PTR [rip+0x2f66]        # 3fe0 <__cxa_finalize@plt+0x2fa0>
Run Code Online (Sandbox Code Playgroud)

c gdb strip objdump disassembly

3
推荐指数
1
解决办法
52
查看次数

main() 是如何调用的?在 __libc_start_main() 中调用 main()

我试图理解对main()inside的调用__libc_start_main()。我知道 的参数之一__libc_start_main()是 的地址main()。但是,我无法弄清楚 main() 是如何在内部调用的,__libc_start_main()因为没有操作码CALLJMP. 在执行跳转到main().

   0x7ffff7ded08b <__libc_start_main+203>:  lea    rax,[rsp+0x20]
   0x7ffff7ded090 <__libc_start_main+208>:  mov    QWORD PTR fs:0x300,rax
=> 0x7ffff7ded099 <__libc_start_main+217>:  mov    rax,QWORD PTR [rip+0x1c3e10]        # 0x7ffff7fb0eb0
Run Code Online (Sandbox Code Playgroud)

"Hello, World!!"用 C写了一个简单的。在上面的程序集中:

  1. 执行跳转到main()地址处的指令之后0x7ffff7ded099
  2. 为什么MOV(到RAX)指令导致跳转到main()

c program-entry-point reverse-engineering libc disassembly

3
推荐指数
1
解决办法
141
查看次数