首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PIC24汇编语言中,C中的无符号长是什么样子的?

在PIC24汇编语言中,C中的无符号长是什么样子的?
EN

Stack Overflow用户
提问于 2013-03-19 18:58:58
回答 1查看 1.3K关注 0票数 1

我在PIC24上用C语言定义了一个变量

假设变量的名称(在C文件中)是The_Number_Of_Bytes

在PIC24 C代码中,它的定义如下.

代码语言:javascript
复制
 unsigned long The_Number_Of_Bytes=0;   // number of bytes in buffer

当一个名为DATABUF01的字节数组将包含The_Number_Of_Bytes字节(对于隐含的冗余表示抱歉)时,我将被调用,并且我需要确保准确地执行那么多字节,然后停止。

我很有信心,这个数字将少于65535,所以为什么它是一个未签署的长是其他的讨论。现在,我想知道,哪个是高阶词,哪个是低阶词?(就这一点而言,long是PIC24 C中的32位数字吗?)

在这个例子中,有人能告诉我W2W3中会有什么吗?

代码语言:javascript
复制
    Mov.W   #_The_Number_Of_Bytes, W1       ;From the dispatcher
    Mov.W   [W1++], W2                      ;My question: Hi Order or Low Order ?
    Mov.W   [W1],   W3                      ;My question: Hi Order or Low ?

    Mov.W   #_DATABUF01, W4                 ;The Start

    Mov.B   [W4++], W5                      ;First byte...

    :                                       ;Whatever
    :                                       ;Whatever
    :                                       ;Whatever

有谁能确认或纠正我对未签名长int的Hi / Low order的看法?

编辑批注请求此。可以回答这个问题(评论是我的)

请求的注释,大小似乎是4个字节,从这个.

代码语言:javascript
复制
  45:                 unsigned long i=0;    
    0AB6A  B80060     mul.uu 0x0000,#0,0x0000    ;make a zero
    0AB6C  980710     mov.w 0x0000,[0x001c+2]    ;no clue which word
    0AB6E  980721     mov.w 0x0002,[0x001c+4]    ;aha, if I made it 1 or 2, I'd know
  46:                 unsigned int Fischer;
  47:                 
  48:                 Fischer = sizeof(i);
      0AB70  200040     mov.w #0x4,0x0000         ;So it must be 4
      0AB72  780F00     mov.w 0x0000,[0x001c]     ;okay, it's a 4 byte number
  49:                 
EN

回答 1

Stack Overflow用户

发布于 2014-08-24 16:20:54

您还可以查看程序的程序集,以便了解他们的编译器是如何实现的.例如:

代码语言:javascript
复制
int main(int argc, char** argv)
{
  long i = 56;
  long j = i;
  return 0;
}

变成..。( xc16-gcc -S main.c )

代码语言:javascript
复制
    .file "/Users/grady/MPLABXProjects/testpic24.X/main.c"
    .section    .text,code
    .align  2
    .global _main   ; export
    .type   _main,@function
_main:
    .set ___PA___,1
    lnk #12
    mov w0,[w14+8]
    mov w1,[w14+10]
    mov #56,w4
    mov #0,w5
    mov.d   w4,[w14]
    mov.d   [w14],w4
    mov w4,[w14+4]
    mov w5,[w14+6]
    clr w4
    mov w4,w0
    ulnk    
    return  
    .set ___PA___,0

    .section __c30_signature, info, data
    .word 0x0001
    .word 0x0000
    .word 0x0000

; MCHP configuration words

    .set ___PA___,0
    .end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15508199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档