标签: segments

.bss段零初始化变量是否占用了elf文件中的空间?

如果我理解正确,.bssELF文件中的部分用于为零初始化变量分配空间.我们的工具链生成ELF文件,因此我的问题是:该.bss部分实际上是否必须包含所有这些零?这似乎是一种非常浪费的空间,比如说,当我分配一个全局的10兆字节数组时,它会在ELF文件中产生10兆字节的零.我在这看错了什么?

c++ storage elf segments

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

如何在1段中放置2个部分(使用ld脚本)

我有以下链接器脚本:

SECTIONS {

    .arora_exec_free_space 4399531 : 
    {
        *(.text)
        *(.rodata)
        *(.data.rel.ro.local)
    }
    .arora_data_free_space (ADDR(.arora_exec_free_space) + SIZEOF(.arora_exec_free_space)) : AT (7592352)
    {
        *(.data)
        *(.bss)
        *(.got)
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译我的程序时,两个部分(exec和数据)处于不同的LOAD段.我想将两个部分(.arora_data_free_space和.arora_exec_free_space)放入一个LOAD段.有没有办法使用链接描述文件?我该怎么做?谢谢.

c linux ld segments

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

可执行C程序中的段

我正在阅读有关部分和细分的内容.似乎您可以列出部分和段之间的映射,如下所示.

$ readelf -l test

Elf file type is EXEC (Executable file)
Entry point 0x8048330
There are 9 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x08048034 0x08048034 0x00120 0x00120 R E 0x4
  INTERP         0x000154 0x08048154 0x08048154 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.2]
  LOAD           0x000000 0x08048000 0x08048000 0x0065c 0x0065c R E 0x1000
  LOAD           0x000f14 0x08049f14 0x08049f14 0x00104 0x00110 RW  0x1000
  DYNAMIC        0x000f28 0x08049f28 0x08049f28 0x000c8 0x000c8 RW  0x4 …
Run Code Online (Sandbox Code Playgroud)

c linux memory-management segments memory-mapping

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

在Python中分割列表

我正在寻找一个python内置函数(或机制)来将列表分段为所需的段长度(不改变输入列表).这是我已有的代码:

>>> def split_list(list, seg_length):
...     inlist = list[:]
...     outlist = []
...     
...     while inlist:
...         outlist.append(inlist[0:seg_length])
...         inlist[0:seg_length] = []
...     
...     return outlist
... 
>>> alist = range(10)
>>> split_list(alist, 3)
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
Run Code Online (Sandbox Code Playgroud)

python list segments

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

在许多段中找到最接近点的算法(反向地理编码)

我有一组由两点定义的段.鉴于一点,我怎样才能发现最接近这一点的细分?

我已经编写了一个计算点和段之间距离的算法.无论如何计算每个段的这种距离,然后选择具有最低距离的段是不是真的有效:(

由于段代表街道,这实际上是一个反向地理编码问题所以我希望有这个问题的众所周知的解决方案......

非常感谢!

algorithm math segments reverse-geocoding

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

在操作码中汇编段

我注意到在程序段中使用了代码段.

例:

MOV DWORD PTR SS:[EBP-30],30
Run Code Online (Sandbox Code Playgroud)

我认为"PTR SS:"用于指定EBP-30来自堆栈?(SS:堆栈段)我是对还是我完全错了?:)那么,请你告诉我上面的例子与之间的区别

MOV DWORD PTR[EBP-30],30
Run Code Online (Sandbox Code Playgroud)

那么在操作码中使用的DS(数据段)呢?

x86 assembly segments opcodes

6
推荐指数
2
解决办法
7078
查看次数

用于确定两个段是否相交的C++过程

我最近在计算几何上做了一些工作,我试图找到一种检查两个线段是否相交的方法.我认为我可以使用逆时针方向(简称CCW)来确定.到目前为止,这是我的代码:

struct point { double x, y };

double CCW(point a, point b, point c)
{ return (b.x-a.x)*(c.y-a.y) - (b.y-a.y)*(c.x-a.x); }

int intersect(point a, point b, point c, point d)
{ return (CCW(a,b,c)*CCW(a,b,d)<0 && CCW(c,d,b)*CCW(c,d,a)<0); }
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于我输入的测试用例,它非常易读且易于实现.但在网上搜索后,我发现了另一种解决分段交叉问题的方法.代码与我的类似,但它有一些if我的实现省略的语句.这是代码:

struct line { point s, e; };

int middle(int a, int b, int c) {
  int t;    
  if ( a > b ) {
    t = a;
    a = b;
    b = t;
  }
  if ( a <= c && c …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm geometry segments computational-geometry

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

在组装中使用LODSB需要什么?

使用LODSB将相对地址加载到我的代码中的字符串所需的最少步骤是什么?

我有以下使用PXE引导的测试程序。我通过两种方式引导它:通过pxelinux.0和直接引导。如果我直接启动它,我的程序将打印两个字符串。如果我通过pxelinux.0引导,它将仅输出第一个字符串。

为什么?

答: 代码很好,初始地址数学错误。见下文。

工作技巧(两者):

  • 将方向标记设置为递增, cld
  • 设置dscs
  • 将字符串的地址(从头开始)放入 si
  • 将起始偏移量添加到 si

非工作技术(仅适用于pxelinux):

  • 根据以下内容计算新的段地址 (((cs << 4) + offset) >> 4)
  • 设置ds为那个。(A000或07C0)

在此处输入文字以解决Markdown中的错误

// Note: If you try this code, don't forget to set 
//       the "#if 0" below appropriately!

    .text
    .globl  start, _start

start:  
_start: 
_start1:    

    .code16

    jmp real_start

    . = _start1 + 0x1fe
    .byte 0x55, 0xAA

    // Next sector
    . = _start1 + 0x200

    jmp real_start

test1_str:
    .asciz  "\r\nTest: 9020:fe00"
test2_str:
    .asciz …
Run Code Online (Sandbox Code Playgroud)

x86 assembly segments

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

通过 ffmpeg 向视频添加动态定位的水印

我正在尝试使用 ffmpeg 为视频添加水印。

但是有一个要求让我很难理解如何制作它,我在课程网络上进行了搜索。

所以,我需要水印每 20 秒随机改变 4 个角的位置。

我的想法是将视频拆分为一组文件,将水印随机应用于每个文件并将结果合并到一个输出文件中。但我认为这是不好的方式。

有人可以帮我吗?

谢谢,谢尔盖

watermark ffmpeg segments

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

查找间隔(段)的成对重叠

我们给出了两组间隔AB.按间隔,我的意思是一对有序的整数,如c(2,5).我想找到所有间隔对 - 一个来自A和一个B- 有重叠.

例如,如果A和B如下:

A=c(c(1,7), c(2,5), c(4, 16))
B=c(c(2,3), c(2,20))
Run Code Online (Sandbox Code Playgroud)

然后FindOverlap(A, B)应返回如下的矩阵(唯一的零元素是因为第3个间隔A与第一个间隔不重叠B):

1 1
1 1
0 1
Run Code Online (Sandbox Code Playgroud)

你有什么有效的想法吗?

algorithm performance r segments intervals

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