小编Edw*_*ard的帖子

我可以删除 awk 中的字段吗?

这是test.txt

0x01,0xDF,0x93,0x65,0xF8
0x01,0xB0,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,0xB2,0x00,0x76
Run Code Online (Sandbox Code Playgroud)

如果我运行 awk -F, 'BEGIN{OFS=","}{$2="";print $0}' test.txt 结果是:

0x01,,0x93,0x65,0xF8
0x01,,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,,0x00,0x76
Run Code Online (Sandbox Code Playgroud)

$2 没有被删除,它只是变空了。我希望在打印 $0 时,结果是:

0x01,0x93,0x65,0xF8
0x01,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,0x00,0x76
Run Code Online (Sandbox Code Playgroud)

awk cut sed

19
推荐指数
3
解决办法
1116
查看次数

callq命令参数的含义是什么?

我知道callq指令的作用;在这个答案中有描述。指令应该有一个参数,它应该是被调用函数的地址。

但是,在反汇编目标文件时,我看到以下行显示了一条callq具有两个值而不是一个参数的指令:

  1e:   e8 00 00 00 00          callq  23 <main+0x19>
Run Code Online (Sandbox Code Playgroud)

我假设这23是返回地址,<main+0x19>是要调用的函数的地址。但是,被调用的函数并不位于 address main+0x19

什么是这两个值的含义23,并main+0x19在拆卸的显示callq指令?


原始 C 代码:

#include <stdio.h>

void fun(int a)
{
}

int main()
{
    int a = 1234;
    fun(a);
}
Run Code Online (Sandbox Code Playgroud)

objdump -D main.o main.asm 反汇编代码:

0000000000000000 <fun>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   89 7d fc                mov    %edi,-0x4(%rbp)
   7:   90                      nop
   8:   5d                      pop …
Run Code Online (Sandbox Code Playgroud)

linux assembly x86-64 disassembly object-files

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

Makefile:为什么带有%的makefile不起作用?

我的Makefile中的%无效。

我已经在Ubuntu 16.04 x64上测试了makefile。

我的makefile代码是:版本1

CC=gcc
OBJ=main.o
TARGET:=main
.PHONY: clean
all : main
# ${OBJ}:%.o:%.c

%.i : %.c
        $(info Preprocess: build main.i)
        ${CC} -E -o $@ $<

%.s : %.i
        $(info Compile: build main.s)
        ${CC} -S -o $@ $<

%.o : %.s
        $(info Assemble: build main.o)
        ${CC} -c -o $@ $<

main : main.o
        $(info Link: build main.o)
        ${CC} -o $@ $^

clean:
        rm -f *.o *.out *.s *.i *.asm *.map ${OBJ} main
Run Code Online (Sandbox Code Playgroud)

运行make,终端显示以下消息:

gcc    -c -o main.o main.c
Link: …
Run Code Online (Sandbox Code Playgroud)

c linux makefile

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

标签 统计

linux ×2

assembly ×1

awk ×1

c ×1

cut ×1

disassembly ×1

makefile ×1

object-files ×1

sed ×1

x86-64 ×1