小编Cor*_*nus的帖子

Graphviz - 对齐节点和集群

我正在尝试用 Graphviz 绘制有限状态图,但无法得到我想要的结果。这是我到目前为止所写的:

digraph G {
    rankdir = LR;

    subgraph cluster_op1 {

        subgraph cluster_0 {
            1 -> 2 [label="a"]  
        }

        subgraph cluster_1 {
            3 -> {4 6} [label="ε"]
            4 -> 5 [label="b"]
            5 -> 4 [label="ε"]
            5 -> 6 [label="ε"]
        }

        subgraph cluster_2 {
            7 -> {8 10} [label="ε"]
            8 -> 9 [label="c"]
            9 -> 8 [label="ε"]
            9 -> 10 [label="ε"]
        }   

        2 -> 3 [label="ε"]
        6 -> 7 [label="ε"]
    }

    subgraph cluster_op2 {

        subgraph cluster_3 {
            11 -> {12 …
Run Code Online (Sandbox Code Playgroud)

dot graphviz

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

困惑于简单的汇编代码(IA32)

考虑以下C函数:

void f1(int i) 
{ 
    int j=i+a; 
}

int f2(int i) 
{
    return i+a; 
}
Run Code Online (Sandbox Code Playgroud)

以及汇编语言的翻译(由讲师给出):

#f1 translation :

subl $8, %esp 
movl 12(%esp), %eax 
movl %eax, 4(%esp) 
movl 4(%esp), %eax 
addl a, %eax 
movl %eax, (%esp) 
addl $8, %esp 
ret

#f2 translation :

subl $8, %esp 
movl 12(%esp), %eax 
movl %eax, 4(%esp) 
movl a, %eax 
movl %eax, (%esp) 
movl (%esp), %eax 
addl 4(%esp), %eax 
addl $8, %esp 
ret
Run Code Online (Sandbox Code Playgroud)

我试图绘制并记下两个汇编代码的每一步,但我根本无法看到两者如何导致不同的C代码.

按照惯例,寄存器%eax包含函数的返回值.如果我没弄错,寄存器%eax包含两个汇编代码末尾的值(i …

c assembly translation

0
推荐指数
1
解决办法
142
查看次数

标签 统计

assembly ×1

c ×1

dot ×1

graphviz ×1

translation ×1