标签: segment

汇编:使用数据段寄存器(DS)

目前我正在学习x86组装以获得乐趣,我喜欢微控制器编程,所以我熟悉汇编.

目前我一直在寻找这个问题的答案的高低,但似乎无法找到它...... DS寄存器,我知道它应该指向我程序中的全局数据,但我不知道知道它是如何工作的.我正在使用NASM,在大多数简单的程序中,我看到以下内容:

[org 0x7C00]
[bits 16]  

main:
mov ax, 0x0000
mov ds, ax
mov al, [msg]  
mov ah, 0x0E  
mov bx, 0x0007  
int 0x10    
jmp $  

msg db 'X'

times 510-($-$$) db 0  
dw 0xAA55

并且它完美地工作(即使我省略了粗体代码),但是如何?CPU是否自动加载从0x0000开始的全局变量?或者我有什么内在的东西,我错过了?

x86 assembly cpu-registers segment

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

是否所有程序代码都加载到文本\代码段\内存段中

我已经开始关注c编程了,虽然我不是一个完整的初学者(我对Java和Web开发有所了解)但有很多我不理解的东西.

我的问题是关于何时首次将程序加载到内存中.我无法理解这里发生的事情.

程序启动时是将所有程序代码加载到内存中还是只加载了所需的程序代码?

在此过程中,当程序运行时,当进程获得CPU时间或加载的代码保留在内存中时,此代码/指令集是否会交换进出物理磁盘?

如果两个进程可以共享相同的指令集,这是否意味着每个进程都有它的虚拟内存空间,一个独立的代码段?

我很抱歉,如果我的问题基本或措辞不好,但我上周才开始看这个问题,经过一个周末的阅读后,我有更多的问题而不是答案!

c memory operating-system segment

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

使用 SegmentPickerStyle() 的选取器不会在 SwiftUI 中显示选取器标题

我为选择性别创建了一个细分选择器,在该细分选择器中,我必须为男性选择一个,为女性选择另一个。选择器工作正常但使用选择器设置标题 it\xe2\x80\x99s 未显示。我设置了标题“选择性别”,但它没有在选取器上显示为标题。

\n\n
struct ManagerChildrenView: View {\n\n        //MARK: Properties\n        @State var selectedGender = 0\n        let genders = ["Male", "Female"]\n\n        var body: some View {\n\n            Form{\n                Section{\n                    Picker("Select Gender", selection: $selectedGender) {\n\n                        ForEach(0..<genders.count) { index in\n                            Text(self.genders[index]).tag(index).font(.title)\n                        }\n                    }.pickerStyle(SegmentedPickerStyle())\n                }\n            }\n        }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

截屏:

\n\n

在此输入图像描述

\n

title picker segment swiftui

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

如何在Visual Studio项目中引用用户定义的段的开头?

我正在努力转换与gnu工具链的ld链接的C程序,以使其作为visual-studio(2005)项目进行编译.该程序将.data-symbols放在不同的段中,在初始化阶段,它在段之间复制数据.指向段开头和结尾的指针在ld链接描述文件中定义.

我理解如何将变量定位到不同的,用户定义的段中,但我还没有弄清楚如何定义链接器常量,如_start_of_my_segment,或者是否有类似于Visual Studio中的链接描述文件.

我的目标是能够编译程序,最好不要修改引用链接器定义符号的源代码,而是使用我自己的Visual Studio项目中数据的自定义布局.

下面是一些示例C代码,它说明了我想要做什么以及与gcc/ld链接时使用的make脚本的一个(精简的,可能是语法错误的)版本.

任何提示将不胜感激!

#pragma data_seg( "MY_DATA_FOO" )
#pragma data_seg( "MY_DATA_BAR" )
#pragma comment(linker, "/section:MY_DATA_BAR,R")

__declspec(allocate("MY_DATA_FOO")) int foo1;
__declspec(allocate("MY_DATA_FOO")) int foo2;

__declspec(allocate("MY_DATA_BAR")) int bar1 = 1;
__declspec(allocate("MY_DATA_BAR")) int bar2 = 2;

#pragma data_seg( )
void test() {
    foo1 = bar1;
    foo2 = bar2;

    // i would rather do this as 
    //extern unsigned int __start_of_MY_DATA_FOO;
    //extern unsigned int __start_of_MY_DATA_BAR;
    //extern unsigned int __size_of_MY_DATA_BAR;
    //memcpy(__start_of_MY_DATA_FOO, _start_of_MY_DATA_BAR, _size_of_MY_DATA_BAR);
}
Run Code Online (Sandbox Code Playgroud)

伪链接脚本(Visual Studio的等价物)

MEMORY
{
  foo:  org=0x1000, len=0x100
  bar:  org=0x2000, len=0x100
} …
Run Code Online (Sandbox Code Playgroud)

c linker symbols segment visual-c++

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

编译器是否可以生成代码以在执行期间卸载部分代码段?

除了在运行时提供加载/卸载方法或函数的能力的Dll概念之外,我想知道编译器是否会说出类似的东西,好吧,因为代码段的这个特定部分占用了相当大的空间并且是在程序执行过程中,在此之后永远不会再次使用,在程序执行期间到达该特定点之后生成一些代码来卸载代码段的那部分是很好的,这样代码段占用的整体空间就会变小.它是虚构的还是可能发生的?

c++ compiler-construction segment

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

Android:将多部分文件连接在一起制作单个文件

我正在开发一个Android应用程序,可以下载几个并行段的文件.我把它们分开了,现在我想把它们加在一起.

为了更清楚,我将通过一个简单的例子向您展示.假设我下载了4个段中的100kb文件.第一段为0kb至25kb,第二段为25kb至50kb,第三段为50kb至75kb,最后一段为75kb至100kb.文件类型可以是mp3,avi等.

现在我需要加入它们,以便这些段(文件部分)成为一个文件.我希望你能帮助我.谢谢你的时间!

编辑:例如它更像是分段的avi(xxx.avi.001,xxx.avi.002,xxx.avi.003)文件,我们有时会下载到我们的PC并使用HJSplit将文件加入到一个文件中.

android join http file segment

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

离子2中的可滚动段(水平)

我试图使用ionic2中的段进行水平滚动.这是代码:

home.ts:

<ion-scroll scrollX="true" style="width:100vw;height:350px" >
<ion-segment [(ngModel)]="relationship" color="primary">


      <ion-segment-button value="friends" (ionSelect)="selectedFriends()">
        Friends
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
       <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>
      <ion-segment-button value="enemies" (ionSelect)="selectedEnemies()">
        Enemies
      </ion-segment-button>

    </ion-segment>
      </ion-scroll>
Run Code Online (Sandbox Code Playgroud)

根据这个文件,我使用离子段外的离子滚动,所以我得到这样的UI.

图片

如何根据名称的长度显示我的名字,并仅显示3到4个名称.用户滚动后,应逐个显示下一个名称.

scroll segment ionic2 angular

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

为什么 elf 文件中的段可以重叠

简单的C文件:

#include <stdio.h>
int main(){
    printf("Hello World");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译代码后,使用readelf -a a.out,精灵信息如下:

elf 程序头、段信息

问题:

  1. 几个部分出现在不同的段中,例如第二段和第三段中的 interp 部分。一个部分如何出现在多个部分中?
  2. 第二段的地址从 0x8048134 开始,但第三个 LOAD 段从 0x8048000 开始,0x004d0 memsize。那么这两段重叠?两个段如何在内存中重叠?
  3. 为什么程序头的偏移量和 viraddr 必须与页面大小模数一致?

assembly elf segment

5
推荐指数
2
解决办法
2844
查看次数

8086 中的堆栈段和堆栈指针

我对 stack segment (ss) 和 stack pointer (sp) registers 有点困惑。当堆栈为空时,sp 值是否等于 ss 值?我读到当我们将一个字(2 字节)推入堆栈时,sp 减 2,如果第一条语句为真(sp=ss),那么我可以说如果堆栈不为空,堆栈指针的值总是较小或等于堆栈段的值是真的吗??。如果我们影响 sp 的值使其大于 ss 会发生什么?即:mov ss,200h mov sp,400h mov ax,1010h push ax

请纠正任何错误,提前thanx

assembly stack segment x86-16

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

使用 FFmpeg 将音频文件分割成等长的片段

我想使用 FFmpeg 将音频文件分割成几个等长的片段。我想指定一般片段持续时间(无重叠),并且我希望 FFmpeg 渲染尽可能多的片段来遍历整个音频文件(换句话说,要渲染的片段数量未指定)。另外,由于我对 FFmpeg 的经验不是很丰富(我只用它来进行带有很少参数的简单文件转换),所以我想要一个您应该用来执行此操作的代码的描述,而不仅仅是我赢得的一段代码不一定懂,如果可以的话。先感谢您。

PS 以下是我尝试这样做的背景:我想自动将一首歌曲采样到单小节循环中,而不是使用 DAW 手动将它们切碎。我想做的就是将歌曲的第一个节拍与 DAW 中的节拍网格对齐,然后导出该音频文件并使用它在 FFmpeg 中生成单小节循环。

将来,我将尝试做一些类似于批处理命令的事情,其中​​可以指定速度和调号,并且它将使用 FFmpeg 自动生成循环(只要循环与节拍网格对齐,就像我'前面已经提到过)。

audio ffmpeg sample tempo segment

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